【发布时间】:2009-09-06 11:39:47
【问题描述】:
我有下面的触发器
ALTER TRIGGER [dbo].[DeleteUserData]
ON [dbo].[site_users]
AFTER DELETE
AS
BEGIN
SET NOCOUNT ON;
--delete user uploads
update my_gallery set deleted=1 where un=(select un from deleted) and subdomain=(select subdomain from deleted)
--delete user pms
delete from pms where toUn=(select un from deleted) and subdomain=(select subdomain from deleted)
--delete friends
delete from friend_blocked_list where un=(select un from deleted) and subdomain=(select subdomain from deleted)
结束
当我删除一个用户时它工作正常,但如果我删除多个用户,子查询在已删除表中返回多个用户并且触发器失败。
当我一次删除多个用户时,如何调整它以使其正常工作?
我考虑过如下改变它。方法对吗?
修改
--delete user uploads
update my_gallery set deleted=1 where un in (select un from deleted) and subdomain in (select subdomain from deleted)
--delete user pms
delete from pms where toUn in (select un from deleted) and subdomain in (select subdomain from deleted)
--delete friends
delete from friend_blocked_list where un in (select un from deleted) and subdomain in (select subdomain from deleted)
有些人可能会问,为什么不将外键添加到表中,但用户名在其子域中是唯一的
【问题讨论】:
标签: sql sql-server triggers