single/multiple SQL INSERT SELECT UPDATE DELETE 语句中 TRAN 和 COMMIT 的用途
Purpose of TRAN and COMMIT in single/multiple SQL INSERT SELECT UPDATE DELETE statement
有人可以用通俗易懂的语言向我解释 SQL t运行saction 在这里做什么吗?
场景如下:
我不是 SQL 开发人员或数据工程师。我希望根据您在 where 子句中看到的过滤器更新列值。我 运行 在数据库中查询,因为我有管理员权限,当然是经过批准的。
我根据需要输入了以下命令。
update idx_task set IDXTaskStatusDE=4 where ID='task_ID'
开发人员随后向我发送了以下查询,并说我做错了。
Use Works
begin tran
update idx_task set IDXTaskStatusDE=4 where ID='task_ID'
commit tran
开发者的邮件回复:
直接针对 SQL 发出即席语句时,最好将语句包装在 t运行saction 中,以防出现问题而需要回滚。更新相同的 table 两次与使用或不使用 t运行 操作是不同的。因此,这是一种专业做法,像您这样的业余爱好者可能不知道。这份工作似乎不在您的主要职责范围内。请与您的老板讨论,让您的团队成为一名职业 SQL 开发人员。
我的努力:
因此,我是在阅读了一些技术术语之后来到这里的,以简述或举例说明这两个查询无论如何都会有不同的行为。
我的问题:
1.) 有人可以在这里提供一个简单的差异理论解释,在 t运行 中包装单个更新语句的重要性吗?
2.) 是否适用于 SQL 开发者社区中的任何先前、未来、安全或专业实践?
在此致各位救星的感谢信
提前感谢所有类型的回复。不管怎样,你的任何类型的反馈都会帮助我获得知识:)
保重!!
参考这个问题的主题。它会清除你的困惑。
Using transaction on a single update statement
@Panagiotis Kanavos 已经指出并表达得很完美。
在阅读有关 SQL 交易的内容时,只需知道以下术语的简单含义即可:
1.) 原子:"Atomic" 表示 "cannot be divided or split in smaller parts"。应用于 1NF 这意味着一列不应包含多个值。它不应该组成或组合具有自己意义的值。
2.) 提交:SQL 中的 COMMIT 语句结束关系数据库管理系统 (RDBMS) 中的事务,并使所有更改对其他用户可见。
3.)锁:是一种保证数据一致性的机制。 SQL 服务器在事务开始时锁定对象。当事务完成后,SQL 服务器释放锁定的对象。因此,在您的情况下,正如@Panagiotis Kanavos 指出的那样,如果其他开发人员并行执行您正在执行更新语句的相同数据,TRAN 正在执行阻止所有其他命令的工作。
希望这对您有所帮助。我认为 "simple words" 不会有比这更多的下降。还是有不明白的地方尽管问。
有人可以用通俗易懂的语言向我解释 SQL t运行saction 在这里做什么吗?
场景如下:
我不是 SQL 开发人员或数据工程师。我希望根据您在 where 子句中看到的过滤器更新列值。我 运行 在数据库中查询,因为我有管理员权限,当然是经过批准的。
我根据需要输入了以下命令。
update idx_task set IDXTaskStatusDE=4 where ID='task_ID'
开发人员随后向我发送了以下查询,并说我做错了。
Use Works
begin tran
update idx_task set IDXTaskStatusDE=4 where ID='task_ID'
commit tran
开发者的邮件回复:
直接针对 SQL 发出即席语句时,最好将语句包装在 t运行saction 中,以防出现问题而需要回滚。更新相同的 table 两次与使用或不使用 t运行 操作是不同的。因此,这是一种专业做法,像您这样的业余爱好者可能不知道。这份工作似乎不在您的主要职责范围内。请与您的老板讨论,让您的团队成为一名职业 SQL 开发人员。
我的努力:
因此,我是在阅读了一些技术术语之后来到这里的,以简述或举例说明这两个查询无论如何都会有不同的行为。
我的问题:
1.) 有人可以在这里提供一个简单的差异理论解释,在 t运行 中包装单个更新语句的重要性吗?
2.) 是否适用于 SQL 开发者社区中的任何先前、未来、安全或专业实践?
在此致各位救星的感谢信
提前感谢所有类型的回复。不管怎样,你的任何类型的反馈都会帮助我获得知识:)
保重!!
参考这个问题的主题。它会清除你的困惑。 Using transaction on a single update statement
@Panagiotis Kanavos 已经指出并表达得很完美。
在阅读有关 SQL 交易的内容时,只需知道以下术语的简单含义即可:
1.) 原子:"Atomic" 表示 "cannot be divided or split in smaller parts"。应用于 1NF 这意味着一列不应包含多个值。它不应该组成或组合具有自己意义的值。
2.) 提交:SQL 中的 COMMIT 语句结束关系数据库管理系统 (RDBMS) 中的事务,并使所有更改对其他用户可见。
3.)锁:是一种保证数据一致性的机制。 SQL 服务器在事务开始时锁定对象。当事务完成后,SQL 服务器释放锁定的对象。因此,在您的情况下,正如@Panagiotis Kanavos 指出的那样,如果其他开发人员并行执行您正在执行更新语句的相同数据,TRAN 正在执行阻止所有其他命令的工作。
希望这对您有所帮助。我认为 "simple words" 不会有比这更多的下降。还是有不明白的地方尽管问。