讨论一下触发器

wolflove23 2008-02-13 11:09:00
create trigger tri_a on a
for insert
as
begin
declare @name varchar(50)
select @name=name from inserted
if not exists(select name from b where name=@name)
insert b(name)select name from inserted
end
go
上面语句的意思是当向a表插入数据name时,如果b表中没有这个name 那么就把name插入到b表。b表name列是主键。
谁能写得更简洁一些。
...全文
96 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tim_spac 2008-02-13
  • 打赏
  • 举报
回复
create trigger tri_a on a  
for insert
as begin
insert into b
select name
from inserted i
where not exists (
select 1 from b
where b.name=i.name)
end
go
昵称被占用了 2008-02-13
  • 打赏
  • 举报
回复
问题不是简洁的问题,而是正确性的问题

create     trigger       tri_a       on     a   
for insert
as
insert b(name)
select name from inserted i
where not exists(select 1 from b where name=i.name)
go
昵称被占用了 2008-02-13
  • 打赏
  • 举报
回复
如果表a中的c全部删除时,就把表b中的c 删除掉,怎么做?

create trigger tri_a_delete on a  
for delete
as
delete b
from deleted d,b
where d.name=b.name
and not exists (
select 1 from a
where name=d.name
)
go
areswang 2008-02-13
  • 打赏
  • 举报
回复
create trigger test on a
for delete
as
delete b where not exists(select 1 from a where a.name = b.name )
go
wolflove23 2008-02-13
  • 打赏
  • 举报
回复
表a
name
a
b
a
c
c
表b
name
a
b
c
如果表a中的c全部删除时,就把表b中的c 删除掉,怎么做?

34,870

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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