2017-03-10 103 views
0

我创建了一个查询,它将从具有'Employee'的三个表中删除行。 当我执行它时,它只从一个表删除行tblEmployeeType。我试着在删除旁边加入别名,但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'` 
+0

如果在表之间定义了外键,则可以使用DELETE CASCADE在单个查询中从这些表中删除行。或者您可以使用删除语句创建存储过程。 因为无法从单个查询中的多个表中删除行,如果它们不相关。 –

回答

1

INSERTUPDATE语句只能直接在同一时间影响一个表。如果您使用ON DELETE CASCADE配置了外键,则子记录将与父记录一起删除。无论使用级联,您应该在桌面上有外键,以便您的DELETE不会留下具有破坏参照完整性的孤儿子记录。

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