日期:2014-05-17  浏览次数:20631 次

添加修改触发器有问题不能全部执行
ALTER TRIGGER [teaxiugai]
   ON [dbo].[kecheng]
   FOR INSERT, UPDATE
AS 
declare @id int,@name varchar(50),@didian varchar(50),@shijian varchar(50),@teacherid int,@techername nvarchar(50),
 @teaid int
set @id=(select id from inserted)
set@teaid=(select id from tea_kecheng)

if(@id=@teaid)
begin
set @shijian=(select [shijian] from inserted)    
update tea_kecheng set shijian=@shijian where id=(select [id] from inserted)
set @name=(select [name] from inserted)    
update tea_kecheng set name=@name where id=(select [id] from inserted)
set @didian=(select [didian] from inserted)    
update tea_kecheng set didian=@didian where id=(select [id] from inserted)
set @teacherid=(select [teacherid] from inserted)    
update tea_kecheng set teacherid=@teacherid where id=(select [id] from inserted)
set @techername=(select [techername] from inserted)    
update tea_kecheng set techername=@techername where id=(select [id] from inserted)
end
else
begin
insert into 
tea_kecheng(id,name,didian,shijian,teacherid,techername)
select id,name,didian,shijian,teacherid,techername from  inserted
end

这个触发器我估计IF有问题
他只能执行上面的那段修改
执行不了下面的添加
如果分开的会
就全变成添加
修改也是添加

------解决方案--------------------
引用:
那怎么样解决啊
 就是判断 另一个表里面有无这个ID 

try this,

ALTER TRIGGER [teaxiugai]
   ON [dbo].[kecheng]
   FOR INSERT, UPDATE
AS 
declare @id int,@name varchar(50),@didian varchar(50),@shijian varchar(50),@teacherid int,@techername nvarchar(50),@teaid int
set @id=(select id from inserted)

if exists(select 1 from tea_kecheng where id=@id)
begin
set @shijian=(select [shijian] from inserted)    
update tea_kecheng set shijian=@shijian where id=(select [id] from inserted)
set @name=(select [name] from inserted)    
update tea_kecheng set name=@name where id=(select [id] from inserted)
set @didian=(select [didian] from inserted)    
update tea_kecheng set didian=@didian where id=(select [id] from inserted)
set @teacherid=(select [teacherid] from inserted)    
update tea_kecheng set teacherid=@teacherid where id=(select [id] from inser