新手.请问一下SQL server 触发器里使用execute时,不能删除和修改表里的数据..请各路大虾打救..

chois007 2012-11-10 12:21:49
内容是这样的..
因为要建一个表,同时有两个外键要参照同一个表的主键,二在SQLSERVER上市不允许在一个表里同时两个外键参照外表的同一个键的,所以建了个触发器来更新一个外键..

触发器是这样的..
CREATE TRIGGER[dbo].[Rivalry_Upd_Del_Trig] ON [dbo].[Entity] For UPDATE,delete
AS
execute('disable trigger Entity_upd_Rivalry_Trig on Rivalry');
begin
IF update(实体)
begin
UPDATE dbo.Rivalry
SET dbo.Rivalry.竞争者=inserted.实体
FROM dbo.Rivalry,deleted,inserted
WHERE deleted.实体=dbo. Rivalry.竞争者
end

IF exists(select * from deleted)and notexists(select * from inserted)
begin
delete Rivalry from Rivalry,deleted where (deleted.实体= Rivalry.竞争者)
end
end
execute('enable trigger Entity_upd_Rivalry_Trig on Rivalry');


上面红色字就是使用了execute之后,使到Entity这个表的数据不能更新和删除,因为这是老师写的,那老师自己也说不出个所以然来,所以在这请教各位大虾了...谢谢....

...全文
161 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chois007 2012-11-10
  • 打赏
  • 举报
回复
那请问一下我现在要怎么修改才可以呢???把两句话调换过来可以么????..
發糞塗牆 2012-11-10
  • 打赏
  • 举报
回复
你的第一步是先禁用,再启用。所以按道理你这个触发器是没有效果的

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧