Sql 如何基于一个表中的特定值从三个表中删除行
大家好 我有三张桌子<代码>A,Sql 如何基于一个表中的特定值从三个表中删除行,sql,sql-server,Sql,Sql Server,大家好 我有三张桌子A,B,C 我在表A中有行,其列“date”具有值“2000-1-1” 我喜欢根据从3表中删除行,其中A.date='2000-1-1' 考虑a.ID=B.ID上的连接。。或者表之间的某种其他类型的联接。您不能对3个表发出单个delete语句,但可以在一个事务中对3个不同的表包装3个delete语句 BEGIN TRANSACTION DELETE FROM TABLE_A WHERE EXISTS (SELECT 1 F
B
,C
我在表A
中有行,其列“date
”具有值“2000-1-1
”
我喜欢根据从3表中删除行,其中A.date='2000-1-1'
考虑a.ID=B.ID上的
连接。。或者表之间的某种其他类型的联接。您不能对3个表发出单个delete语句,但可以在一个事务中对3个不同的表包装3个delete语句
BEGIN TRANSACTION
DELETE FROM TABLE_A
WHERE EXISTS (SELECT 1
FROM Table_X X
WHERE TABLE_A.ID = X.ID)
DELETE FROM TABLE_B
WHERE EXISTS (SELECT 1
FROM Table_X X
WHERE TABLE_B.ID = X.ID)
DELETE FROM TABLE_C
WHERE EXISTS (SELECT 1
FROM Table_X X
WHERE TABLE_C.ID = X.ID)
COMMIT TRANSACTION;
级联删除怎么样?不能同时从三个表中删除。您需要三个单独的语句。一个DML语句(insert、delete等)只能影响一个表。问题是“如何做”,它们不需要一个语句。这可以通过一个事务中的3条语句来完成。如果您想回答您的问题,我们需要更多信息。您正在寻找多个语句、一个存储过程、一组触发器吗?什么是表X?第四桌?