触发器代码如下
Create Trigger trufqpz --触发器名称
On yfqpz --在yfqpz表中创建触发器 A表
for Update --为什么事件触发
As --事件触发后所要做的事情
if Update(fzqk) --要更新的字段
begin
Update yxinxi --要触发的表 B表
Set fzqk=i.fzqk
From yxinxi br , Deleted d ,Inserted i --Deleted和Inserted临时表
Where br.fzqk=d.fzqk
END
注:
Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:
虚拟表Inserted 虚拟表Deleted
开始的时候这个代码有触发作用,后来我再B表也写了个触发器,即B触发,A也触发,发现最后成了间接递归了,于是删除B表的触发器,只留下A表的,发现修改A表可以,但是B表没有同样修改
大家帮忙看看啊
另外我鼠标光标悬停到 触发器的浅蓝色代码上 显示出 transact-sql intellisense中当前不支持 alter trigger
意思大概是说不 支持创建触发器的意思,是不是跟这个也有关系呢??
大家帮忙看看啊,新手分数不多 见谅,就是把遇到的问题拿来大家探讨一下
8 个解决方案
#1
alter/*create*/ trigger grade_modify
on Tb
for INSERT
as
begin
select name from inserted--tb表刚刚插入的数据
你想做的操作
end
给个简单示例,看是否能对你有所启发,这是一个插入触发器,如果tb表有数据插入则会触发
on Tb
for INSERT
as
begin
select name from inserted--tb表刚刚插入的数据
你想做的操作
end
给个简单示例,看是否能对你有所启发,这是一个插入触发器,如果tb表有数据插入则会触发
#2
提示什么吗
#3
我用的是VS2010执行之后 提示命令完成,但是就是不起作用
#4
create trigger tupdate_yfqpz on a
for update
as
if update(fzqk)
begin
update b set fzqk=i.fzqk from b,inserted i,deleted d
where i.fqid = d.fqid
and i.fzqk <> d.fzqk
and b.fqid = i.fqid
end
#5
create trigger tupdate_yfqpz on a
for update ,delete
as
if update(fzqk)
begin
update b set fzqk=i.fzqk from b,inserted i,deleted d
where i.fqid = d.fqid
and i.fzqk <> d.fzqk
and b.fqid = i.fqid
end
#6
5楼大哥,我贴上了 但是说a没有声明什么的饿··闹心啊~ 我菜鸟
#7
先在数据库使用SQL脚本更新数据测试你的触发器是否有效的,如果无效,检查触发器,如果有效,查看程序是否执行更新语句是否成功。。。从多个地方去排查问题,你最终会正确的(注:我也是个小菜鸟)
#8
将 fzqk改为 唯一约束的 就是类似主键的,不会重复的,以前我也出过类似错误,猜你的fzqk不能唯一确定
#1
alter/*create*/ trigger grade_modify
on Tb
for INSERT
as
begin
select name from inserted--tb表刚刚插入的数据
你想做的操作
end
给个简单示例,看是否能对你有所启发,这是一个插入触发器,如果tb表有数据插入则会触发
on Tb
for INSERT
as
begin
select name from inserted--tb表刚刚插入的数据
你想做的操作
end
给个简单示例,看是否能对你有所启发,这是一个插入触发器,如果tb表有数据插入则会触发
#2
提示什么吗
#3
我用的是VS2010执行之后 提示命令完成,但是就是不起作用
#4
create trigger tupdate_yfqpz on a
for update
as
if update(fzqk)
begin
update b set fzqk=i.fzqk from b,inserted i,deleted d
where i.fqid = d.fqid
and i.fzqk <> d.fzqk
and b.fqid = i.fqid
end
#5
create trigger tupdate_yfqpz on a
for update ,delete
as
if update(fzqk)
begin
update b set fzqk=i.fzqk from b,inserted i,deleted d
where i.fqid = d.fqid
and i.fzqk <> d.fzqk
and b.fqid = i.fqid
end
#6
5楼大哥,我贴上了 但是说a没有声明什么的饿··闹心啊~ 我菜鸟
#7
先在数据库使用SQL脚本更新数据测试你的触发器是否有效的,如果无效,检查触发器,如果有效,查看程序是否执行更新语句是否成功。。。从多个地方去排查问题,你最终会正确的(注:我也是个小菜鸟)
#8
将 fzqk改为 唯一约束的 就是类似主键的,不会重复的,以前我也出过类似错误,猜你的fzqk不能唯一确定