从多个表中删除行

时间:2017-03-10 01:26:43

标签: sql stored-procedures

我创建了一个查询,该查询将从具有' Employee'的三个表中删除行。 当我执行它时,它只删除一个表 tblEmployeeType 中的行。我尝试在 DELETE 旁边添加其他表的 Alias ,但SQL不支持它。是否有从多个表中删除行的替代方法?或者我在查询中忘记了一些代码,或者我应该单独删除查询?谢谢。

DELETE a
    FROM tblEmployeeType a INNER JOIN
         tbl_Selected_AccessType b
         ON a.EmpTypeName = b.UserType INNER JOIN
         tbl_AccessType_AllFunction c
         ON a.EmpTypeName = c.UserType
    WHERE a.EmpTypeName = 'Employee'`

1 个答案:

答案 0 :(得分:1)

INSERTUPDATE语句一次只能直接影响一个表。如果您使用ON DELETE CASCADE配置了外键,则子记录将与父记录一起删除。无论使用级联,您都应该在表上使用外键,以便DELETE不会使孤立的子记录失去参照完整性。

实现影响INSERTUPDATE中其他表的另一种方法是使用表上的触发器。当您想在盲目删除子记录之前进行检查时,这是可取的。