社区
MS-SQL Server
帖子详情
instead of update 触发器不能执行以下语句
hncxxs
2003-11-08 09:17:57
declare @sql varchar(1000)
set @sql= ' update kaoqi set code=''xs200 '''
execute()@sql
...全文
84
11
打赏
收藏
instead of update 触发器不能执行以下语句
declare @sql varchar(1000) set @sql= ' update kaoqi set code=''xs200 ''' execute()@sql
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
SQL Server数据库实验_存储过程与
触发器
设计.docx
实验5.1 存储过程的建立与使用 一、实验目的 理解存储过程的概念、作用、建立和调用方法。 二、实验原理 使用CREATE PROCEDURE
语句
创建存储过程,ALTER PROCEDURE
语句
修改存储过程,DROP PROCEDURE
语句
删除存储过程,存储过程有不带参数的、有带输入参数的、有带输出参数(output)的,还可以有带返回值的。创建好的存储过程可以使用EXEC procedure_name
语句
执行
。 实验5.2
触发器
的建立与使用 一、实验目的 理解
触发器
的概念和作用;了解
触发器
的分类及触发条件;掌握
触发器
的定义及应用。 二、实验原理 1、 使用CREATE TRIGGER
语句
定义
触发器
,ALTER TRIGGER
语句
修改
触发器
,DROP TRIGGER
语句
删除
触发器
。 2、
触发器
分AFTER/FOR和INSTEAD OF两种类型:AFTER/FOR类型的
触发器
是在相应的触发
语句
(insert、delete、
update
)
执行
完后被触发的。如果触发
语句
对应的表上有完整性约束,这些完整性约束必须不违背时,相应的触发
语句
才能
执行
,然后才能触发对应的AFTER/FOR类型的
触发器
。INSTEAD OF类型的
触发器
会在触发
语句
(insert、delete、
update
)
执行
之前被触发,并取代相应的触发
语句
。 3、 在表或视图上,每个INSERT、
UPDATE
或DELETE
语句
只能创建一个INSTEAD OF类型的
触发器
,无法为有外键约束且指定为级联删除或级联修改的表创建DELETE或
UPDATE
语句
上的INSTEAD OF 类型的
触发器
。 SQL SERVER为每个
触发器
都创建了两个临时表INSERTED表和DELETED表,这两个表的逻辑结构与被
触发器
作用的表一样,用户可以读取这两个表的内容,但
不能
对它们进行修改,
触发器
执行
完后,这两个表也会自动删除。当
执行
INSERT时,INSERTED表中保存要向表中插入的所有行;当
执行
DELETE时,DELETED表中保存要从表中删除的所有行;当
执行
UPDATE
时,修改前的行保存在DELETED表中,修改后的行保存在INSERTED行中。
1.SQL Server DML
触发器
之AFTER
触发器
根据DML
触发器
发生的时间、编写
触发器
所使用的语言,可以分为AFTER
触发器
、INSTEAD OF
触发器
和CLR
触发器
。AFTER
触发器
在
执行
INSERT、
UPDATE
或DELETE
语句
操作之后、INSTEAD OF
触发器
和约束之后激发。INSTEAD OF在处理约束前激发,因此可以在INSTEAD OF中使用其他
语句
来替代激发
触发器
的INSERT、
UPDATE
等
语句
。并且,还可为基于一个或多个基表的视图定义INSTEAD OF
触发器
,从而扩展视图可支持的更新类型。CLR
触发器
可以是AFTER
触发器
或INS
mysql
触发器
instead of_SQL Server Instead Of
触发器
在本教程中,将学习如何使用SQL Server INSTEAD OF
触发器
通过视图将数据插入基础表。INSTEAD OF
触发器
简介INSTEAD OF
触发器
是一种
触发器
,用于跳过对表或视图的INSERT,DELETE或
UPDATE
语句
,并
执行
触发器
中定义的其他
语句
。根本不会发生实际的插入,删除或更新操作。换句话说,INSTEAD OF
触发器
会跳过DML
语句
并
执行
其他
语句
。SQL Server IN...
INSTEAD OF与AFTER
触发器
INSTEAD OF
触发器
AFTER
触发器
(也叫“FOR”
触发器
)会在触发 insert、
update
或是delect 动作之后
执行
。例如,一个 Employees 表上的 AFTER
触发器
会在在 Employee 表上
执行
一条
update
语句
后激活。因此,AFTER
触发器
只有在已插入一行或是多行和所有约束已被处理且通过后才触发。INSTEAD OF
触发器
和 AFTER 触发...
SqlServer INSTEAD OF
UPDATE
视图
触发器
问题
源于系统中的 INSTEAD OF
UPDATE
视图
触发器
关联表更新时,发生了错误如下: 消息 414,级别 16,状态 1,第 1 行 不允许使用
UPDATE
,因为该
语句
会更新视图 "VTestTab",而该视图参与联接并且有一个 INSTEAD OF
UPDATE
触发器
。 于是测试该
触发器
的
执行
原理是什么!~ 说明: 视图只能被 INSTEAD OF
触发器
MS-SQL Server
34,497
社区成员
254,561
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章