在使用联接进行SQL查询期间,我是否需要使用事务?
我在想类似的东西:
Delete table1, table2, table3 FROM table1 INNER JOIN table2 ON(...) LEFT JOIN table3 ON (...) WHERE table1.column = something...
(我不知道该语法是否100%正确,但我想您还是可以理解的)
是否存在并非所有应删除的行都不会被删除的风险?
谢谢!
由于这是单个命令(DELETE),因此无需显式使用事务。根据定义,SQL命令是原子的,即它将删除符合条件的所有行,或者根本不删除任何错误。
DELETE
编辑:这个答案在理论上是正确的,并且对于支持ACID的数据库。如果数据库不支持原子性,或者存在一些错误会触发数据库引擎方面的错误行为,那么所有选择都将关闭。但是,在这些情况下使用事务进行魔术般的改进不太可能。