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

求一Sql触发器,向表里插入数据时判断该条记录是否存在,如果存在则更新,不存在则插入
求一Sql触发器,向表里插入数据时判断该条记录是否存在,如果存在则更新,不存在则插入!
------解决方案--------------------

1、--处理的触发器示例
create trigger tr_insert on 表
instead of insert  --注意触发器的类型
as
--更新已经存在的主键
update 表 set name=b.name,sex=b.sex
from 表 a join inserted b on a.id=b.id

--插入存在的主键数据
insert 表
select a.*
from inserted a left join 表 b on a.id=b.id
where b.id is null
go
——————————————————————————————————————————

2、--触发器
CREATE TRIGGER tri_edit  ON tab
INSTEAD OF INSERT
AS

if exists(select col1,col2 from tab join inserted on tab.学号=INSERTED.学号)
 begin
--这里面你可以加如些其他修改操作,取决于具体的功能
        update tab set col1='num1' from tab join inserted on tab.学号=inserted.学号
 end
else
 insert tab  select * from inserted
GO






------解决方案--------------------
不用那麼麻煩,直接用這語句就行.
Update dbo.PartOpr
Set 字段=值
-- 存在記錄才更新
Where OperationDesc=@OperationDesc 
and TopVersion=@TopVersion 
and DrawNum=@DrawNum  
and TopPartNum=@TopPartNum 
and [Version]=@Version


Insert into dbo.PartOpr(字段)
Select 
字段
-- 不存在記錄才插入
Where Not exists(select 1 from dbo.PartOpr
Where OperationDesc=@OperationDesc 
and TopVersion=@TopVersion 
and DrawNum=@DrawNum  
and TopPartNum=@TopPartNum 
and [Version]=@Version
)

------解决方案--------------------
引用:
引用:
SQL code?12345678910111213141516171819202122232425262728291、--处理的触发器示例create trigger tr_insert on 表instead of insert  --注意触发器的类型as--更新已经存在的主键update 表 set name=b.name,sex=b.sexfr……
你表里面有自增列,然后被显示插入值造成报错。SET identity_insert ON,然后再执行