关于insert触发器

Love001 2005-03-14 10:50:00
表:tab
-----------------------
|xingming | nianling |
-----------------------
|TOM | 20 |
-----------------------

我想实现:当用户向表中插入数据的时候,先判断表中是否存在改记录,如果存在则先删除该条记录后插入新的记录。
以下是我的SQL

alter trigger trig_upload_insert on tab for insert
as
begin
delete tab
from tab
where tab.xingming = inserted.xingming and tab.nianling = inserted.nianling
end
结果是连同将要插入的记录一起被删除了!
请教各位!
...全文
117 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
FCU 2005-03-14
  • 打赏
  • 举报
回复
为什么不能写到触发器中呢?
chinacheng07 2005-03-14
  • 打赏
  • 举报
回复
學習
Love001 2005-03-14
  • 打赏
  • 举报
回复
可是我的客户端程序已经发布了
Softlee81307 2005-03-14
  • 打赏
  • 举报
回复
不能寫在觸發中,應寫在insert 記錄的前面
Love001 2005-03-14
  • 打赏
  • 举报
回复
不好意思写错了

alter trigger trig_upload_insert on tab for insert
as
begin
delete tab
from tab,inserted
where tab.xingming = inserted.xingming
and tab.nianling = inserted.nianling
end
lxd99423 2005-03-14
  • 打赏
  • 举报
回复
--这样还会更好一点
alter trigger trig_upload_insert on tab
instead of insert
as
begin
delete tab
from inserted
where tab.xingming = inserted.xingming and tab.nianling = inserted.nianling
--再插一次
insert tab select * from inserted
end
lxd99423 2005-03-14
  • 打赏
  • 举报
回复
--最好是在插入之前作判断,实在不行的话,可以先全部删掉,再重插一次

alter trigger trig_upload_insert on tab for insert
as
begin
delete tab
from inserted
where tab.xingming = inserted.xingming and tab.nianling = inserted.nianling
--再插一次
insert tab select * from inserted
end
yesyesyes 2005-03-14
  • 打赏
  • 举报
回复
应该用instead of insert触发器,不能用for insert

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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