触发器能这样写吗???速度太慢,还经常出现死锁,是哪儿出了问题??
语句如下:/****** 对象: 触发器 dbo.Update_Z_XueYuanBaoMing 脚本日期: 2009-11-24 11:23:11 ******/
CREATE TRIGGER [Update_Z_XueYuanBaoMing] ON [dbo].[Z_XueYuanBaoMing]
FOR UPDATE
AS
IF UPDATE(F_XYDaiMa)
BEGIN
RAISERROR ('不允许修改学员代码! Reference to table Z_ZongZhang',1,1)
ROLLBACK TRANSACTION
END
--可以修改学员姓名
IF UPDATE(F_XYXingMing)
BEGIN
alter table Z_ZongZhang disable trigger all
UPDATE Z_ZongZhang
SET Z_ZongZhang.F_XYXingMing = inserted.F_XYXingMing
FROM Z_ZongZhang, deleted, inserted
WHERE deleted.F_XYXingMing = Z_ZongZhang.F_XYXingMing
alter table Z_ZongZhang enable trigger all
alter table Z_XueYuanJiaoFeiRuZhang disable trigger all
UPDATE Z_XueYuanJiaoFeiRuZhang
SET Z_XueYuanJiaoFeiRuZhang.F_XYXingMing = inserted.F_XYXingMing
FROM Z_XueYuanJiaoFeiRuZhang, deleted, inserted
WHERE deleted.F_XYXingMing = Z_XueYuanJiaoFeiRuZhang.F_XYXingMing
alter table Z_XueYuanJiaoFeiRuZhang enable trigger allalter table Z_KaoSiLuZhang disable trigger all
UPDATE Z_KaoSiLuZhang
SET Z_KaoSiLuZhang.F_XYXingMing = inserted.F_XYXingMing
FROM Z_KaoSiLuZhang, deleted, inserted
WHERE deleted.F_XYXingMing = Z_KaoSiLuZhang.F_XYXingMing
alter table Z_KaoSiLuZhang enable trigger all END--------------
语句如下:/****** 对象: 触发器 dbo.Update_Z_XueYuanBaoMing 脚本日期: 2009-11-24 11:23:11 ******/
CREATE TRIGGER [Update_Z_XueYuanBaoMing] ON [dbo].[Z_XueYuanBaoMing]
FOR UPDATE
AS
IF UPDATE(F_XYDaiMa)
BEGIN
RAISERROR ('不允许修改学员代码! Reference to table Z_ZongZhang',1,1)
ROLLBACK TRANSACTION
END
--可以修改学员姓名
IF UPDATE(F_XYXingMing)
BEGIN
alter table Z_ZongZhang disable trigger all
UPDATE Z_ZongZhang
SET Z_ZongZhang.F_XYXingMing = inserted.F_XYXingMing
FROM Z_ZongZhang, deleted, inserted
WHERE deleted.F_XYXingMing = Z_ZongZhang.F_XYXingMing
alter table Z_ZongZhang enable trigger all
alter table Z_XueYuanJiaoFeiRuZhang disable trigger all
UPDATE Z_XueYuanJiaoFeiRuZhang
SET Z_XueYuanJiaoFeiRuZhang.F_XYXingMing = inserted.F_XYXingMing
FROM Z_XueYuanJiaoFeiRuZhang, deleted, inserted
WHERE deleted.F_XYXingMing = Z_XueYuanJiaoFeiRuZhang.F_XYXingMing
alter table Z_XueYuanJiaoFeiRuZhang enable trigger allalter table Z_KaoSiLuZhang disable trigger all
UPDATE Z_KaoSiLuZhang
SET Z_KaoSiLuZhang.F_XYXingMing = inserted.F_XYXingMing
FROM Z_KaoSiLuZhang, deleted, inserted
WHERE deleted.F_XYXingMing = Z_KaoSiLuZhang.F_XYXingMing
alter table Z_KaoSiLuZhang enable trigger all END--------------
WHERE deleted.F_XYXingMing = Z_ZongZhang.F_XYXingMing
----------
都不要 deleted 试试,多余的。
WHERE deleted.F_XYXingMing = Z_ZongZhang.F_XYXingMing
----------
deleted,inserted没有关联
单条记录应该没问题,多条的话等于cross join