instead of update 触发器不能执行以下语句

hncxxs 2003-11-08 09:17:57
declare @sql varchar(1000)
set @sql= ' update kaoqi set code=''xs200 '''
execute()@sql
...全文
88 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hncxxs 2003-11-08
  • 打赏
  • 举报
回复
但是我如果直接寫update Employee set name='xs400 ' 就可以更新數據,何解?
instead 本來就是替換觸發器
zjcxc 元老 2003-11-08
  • 打赏
  • 举报
回复
表自己的instead更新自己当然不行。那样会产生递归触发。不支持的。
shanhx 2003-11-08
  • 打赏
  • 举报
回复
我觉得这里的人都很历害﹐还是自已太菜了﹐呵呵。学习ing..,,.
hncxxs 2003-11-08
  • 打赏
  • 举报
回复
CREATE TRIGGER trg_upd ON [dbo].[kaoqi]
instead of update
AS
declare @sql varchar(1000)
set @sql= ' update Employee set name=''xs400 '''
exec( @sql)

hncxxs 2003-11-08
  • 打赏
  • 举报
回复
我说的是表自己的instead更新自己 kaoqi 的instead of 更新kaoqi ,更新其他表没有问题的.
hncxxs 2003-11-08
  • 打赏
  • 举报
回复
语法检查是没有问题的,不过执行结果并没有改变数据
zjcxc 元老 2003-11-08
  • 打赏
  • 举报
回复
--肯定行啦

--测试表
create table test(id int)
create table kaoqi(code varchar(10))
go

--测试触发器
create trigger t_test on test
instead of update
as
declare @sql varchar(1000)
set @sql= 'update kaoqi set code=''xs200 '''
execute(@sql)
go

--插入数据
insert into test values(1)
insert into kaoqi values('a')

--更新以测试触发器
update test set id=1

--显示结果
select * from kaoqi

drop table test,kaoqi
wzh1215 2003-11-08
  • 打赏
  • 举报
回复
declare @sql varchar(1000)
set @sql= ' update kaoqi set code=''xs200 '''
execute(@sql)
也可以!
hncxxs 2003-11-08
  • 打赏
  • 举报
回复
因为update语句式动态的,以上我只
是举个例子,instead 触发器好像不能执行exec(@sql)这种形式的语句。
是否有其他办法在instead 中能执行exec(@sql)这种形式的语句。
wzh1215 2003-11-08
  • 打赏
  • 举报
回复
直接用:
update kaoqi set code='xs200'
就行了!
hncxxs 2003-11-08
  • 打赏
  • 举报
回复
刚才写错了,应该是这样:
declare @sql varchar(1000)
set @sql= ' update kaoqi set code=''xs200 '''
execute(@sql)

34,668

社区成员

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

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