一尘不染

加入联合查询需要交易吗?

sql

在使用联接进行SQL查询期间,我是否需要使用事务?

我在想类似的东西:

Delete table1, table2, table3 
FROM table1 INNER JOIN table2 ON(...) 
LEFT JOIN table3 ON (...) 
WHERE table1.column = something...

(我不知道该语法是否100%正确,但我想您还是可以理解的)

是否存在并非所有应删除的行都不会被删除的风险?

谢谢!


阅读 132

收藏
2021-03-08

共1个答案

一尘不染

由于这是单个命令(DELETE),因此无需显式使用事务。根据定义,SQL命令是原子的,即它将删除符合条件的所有行,或者根本不删除任何错误。

编辑:这个答案在理论上是正确的,并且对于支持ACID的数据库。如果数据库不支持原子性,或者存在一些错误会触发数据库引擎方面的错误行为,那么所有选择都将关闭。但是,在这些情况下使用事务进行魔术般的改进不太可能。

2021-03-08