CSDN论坛 > MS-SQL Server > 基础类

触发器中的INSTEAD OF 参数问题 [问题点数:20分,结帖人hljhl]

Bbs1
本版专家分:0
结帖率 100%
Bbs6
本版专家分:8518
Blank
红花 2004年6月 Oracle大版内专家分月排行榜第一
2004年5月 Oracle大版内专家分月排行榜第一
Blank
黄花 2009年7月 Oracle大版内专家分月排行榜第二
2009年6月 Oracle大版内专家分月排行榜第二
2004年4月 Oracle大版内专家分月排行榜第二
Blank
蓝花 2004年3月 Oracle大版内专家分月排行榜第三
Bbs12
本版专家分:374376
Blank
状元 2003年 总版技术专家分年内排行榜第一
Blank
金牌 2003年11月 总版技术专家分月排行榜第一
2003年10月 总版技术专家分月排行榜第一
2003年8月 总版技术专家分月排行榜第一
2003年6月 总版技术专家分月排行榜第一
2003年5月 总版技术专家分月排行榜第一
2003年4月 总版技术专家分月排行榜第一
2003年3月 总版技术专家分月排行榜第一
Blank
银牌 2003年9月 总版技术专家分月排行榜第二
2003年7月 总版技术专家分月排行榜第二
2003年2月 总版技术专家分月排行榜第二
Blank
铜牌 2003年1月 总版技术专家分月排行榜第三
2002年12月 总版技术专家分月排行榜第三
Bbs14
本版专家分:884721
Blank
名人 年度总版至少三次排名前十即授予名人勋章
Blank
状元 2005年 总版技术专家分年内排行榜第一
2004年 总版技术专家分年内排行榜第一
Blank
进士 2006年 总版技术专家分年内排行榜第六
2003年 总版技术专家分年内排行榜第八
Blank
金牌 2005年6月 总版技术专家分月排行榜第一
2005年5月 总版技术专家分月排行榜第一
2005年4月 总版技术专家分月排行榜第一
2005年3月 总版技术专家分月排行榜第一
2005年2月 总版技术专家分月排行榜第一
2005年1月 总版技术专家分月排行榜第一
2004年12月 总版技术专家分月排行榜第一
2004年11月 总版技术专家分月排行榜第一
2004年10月 总版技术专家分月排行榜第一
2004年9月 总版技术专家分月排行榜第一
2004年8月 总版技术专家分月排行榜第一
2004年7月 总版技术专家分月排行榜第一
2004年6月 总版技术专家分月排行榜第一
2004年5月 总版技术专家分月排行榜第一
2004年4月 总版技术专家分月排行榜第一
2004年3月 总版技术专家分月排行榜第一
2004年1月 总版技术专家分月排行榜第一
2003年12月 总版技术专家分月排行榜第一
Bbs2
本版专家分:304
匿名用户不能发表回复!
其他相关推荐
instead of 触发器
CREATE TRIGGER IO_Trig_INS_Employee ON Employee INSTEAD OF INSERT AS BEGIN SET NOCOUNT ON IF (NOT EXISTS (SELECT P.SSN FROM Person P, inserted I WHERE P.SSN = I.SSN)) INSERT INTO Person SELECT SSN,Name,Address,Birthdate,Comment FROM inserted ELSE INSERT INTO PersonDuplicates SELECT SSN,Name,Address,Birthdate,SUSER_SNAME(),GETDATE() FROM inserted IF (NOT EXISTS (SELECT E.SSN FROM EmployeeTable E, inserted WHERE E.SSN = inserted.SSN)) INSERT INTO EmployeeTable SELECT EmployeeID,SSN, Department, Salary,Comment FROM inserted ELSE UPDATE EmployeeTable SET EmployeeID = I.EmployeeID, Department = I.Department, Salary = I.Salary, Comment = I.Comment FROM EmployeeTable E, inserted I WHERE E.SSN = I.SSN END
instead of触发器????
表Arnid f_name l_name rn----------- ------------ ------------ rn1 aa bbbrn2 cc dddrn3 ee fffrn-----------------------------------rn视图B(是基于表A创建的,它是把表A的f_name和l_name合并生成full_name)rnid full_name rn----------- ------------------------- rn1 aa.bbbrn2 cc.dddrn3 ee.fffrn------------------------------------rn要求通过视图B来插入数据rn-------------------------------------
INSTEAD OF触发器使用的问题
创建触发器:rncreate trigger update_读者信息rnon 读者信息rninstead of updaternasrnif update(日期)rnbeginrnprint '不能修改日期'rnrollbackrnendrngornrn测试该触发器:rnupdate 读者信息 set 日期=getdate() where 姓名='ABC'rn显示:不能修改日期,说明该触发器被触发了rnrn可是对INSTEAD OF触发器我不太明白:rn1、因为操作的过程中,无论更新哪一列,都会触发该触发器。所以,只要使用了INSTEAD OF触发器,该表所有的列都不能被更新了。这是正确的吗?对此有些疑惑,如果是正常了,用INSTEAD OF触发器有什么用呢?rn2、INSTEAD OF并不表示在进行更新操作之前执行触发器,也不表示在进行更新操作之后执行触发器。按照字面意思,就是忘掉更新操作,转而执行后面的操作。这样理解对吗?rnrn 可不可以理解为INSTEAD OF触发器是用来限制对表/视图进行添加、修改、删除操作的??
有关instead of 触发器得问题
我想写个触发器 对插入表中得数据进行处理rn如表A有字段Content 类型textrn我要把content字段只中得"xxxx" 替换为"yyyyy"rnCREATE TRIGGER [cccc] ON [shujuku].[表A] rn instead of INSERTrnASrndeclare @content nvarcharrndeclare @id intrnIF @@ROWCOUNT = 1rnbeginrnSELECT @content= content ,@id=pid from INSERTEDrnset @content=replace(@content,'xxxx','yyyy')rnupdate 表A set content =@content where pid=@idrnendrnrnendrnrnrn这个触发器该怎么写才正确啊rnrnrn
INSTEAD OF 触发器 问题
我现在想做个日志表的功能。当用户修改一张表的时候,做一个记录到日志表中。但是不是全部更新都需要插入到日志表中。所以我在基表做了个标示,我通过判断这个标示来插入日志表。rn现在的问题是,我触发器判断也已经正确,但是更新语句不能起作用。rngoogle了下,说是因为 INSTEAD OF 触发器,是在语句执行前调用,执行了它就不执行我们要执行的语句了。rn我用after触发器,但是我的表中存在text字段,不让我用。rn我的数据库是sql server2005rnrn触发器语句是这样。rnALTER Trigger [dbo].[SICRF_INFO_LOG]rn On [dbo].[SI_CRF_INFO]rn INSTEAD OF UpdaternAsrn rn beginrndeclare @flag intrndeclare @time datetimerndeclare @sicrfid intrnset @time= getdate()rnselect @flag=ISBACKUP,@sicrfid=SI_CRF_ID from Inserted i where i.SI_CRF_ID=SI_CRF_IDrnif @flag = 1rnbeginrninsert into SI_CRF_INFO_LOG (SI_CRF_ID,ISBACKUP,MODIFICATION_REASONS,TRANS_OUT_TYPE,UPDATE_DATE)rn select d.*,@time as UPDATE_DATE rnfrom deleted d where d.SI_CRF_ID=SI_CRF_ID rnendrnend rn字段很长我截断了一些。
触发器 instead of 问题
各位好:rnrn 问题如下:有个试图view_dept是有几个表构成,有个表temp_dept,我想在view_dept记录改变时(如增加、修改和删除)把改变的记录写或更改到表temp_dept中,这个触发器该怎么写,先谢过了。
instead of 触发器问题
我现在有个表A,在更新表A的一条纪录之前要判断这条纪录是否有字段被更改了,rn 如果没有字段被修改的话就不更新了。我想用instead of 触发器来解决,rn when (条件=没有被更新)rn beginrn 触发器主体里什么都不写好象是不可以的吧????rn end;rn 那我该怎么写呢?难道要这样吗?rnrn when (条件=被更新)rn beginrn update 表A set..........rn end;rn rn 请高手给我的思路,或帮我写一下,谢谢了。rn
存储过程和触发器-INSTEAD OF触发器
/* INSTEAD OF触发器可以把视图的修改应用到视图的基表上。可以使用CREATE TRIGGER来创建语句触发器,语法如下 CREATE OR REPLACE TRIGGER INSTEAD OF ON */ --用来测试INSTEAD OF触发器的脚本 DROP TABLE DEPARTMENT; DROP TABLE EMPLOYEES; DROP TRIGGER TESTROWTRIGGER1; DROP TRIGGER TESTROWTRIGGER
instead of 触发器和 for 触发器的区别。
。。不懂啊。。有谁总结过的。。rn我前面问的两个问题。。rnhttp://topic.csdn.net/u/20110529/22/e173fa59-d3cd-4fbc-9bf6-41172ffce7c7.htmlrnhttp://topic.csdn.net/u/20110522/17/c660533e-b18a-4928-9fc9-f2a9245a7ea9.htmlrnrn用for 触发器都实现不了。。改用instead of 触发器就可以。。求原因。
oracle 触发器before和after数据区别
create or replace trigger "test" before insert on mh_task for each row declare       PRAGMA            AUTONOMOUS_TRANSACTION;       task_id           mh_task.id%type ;       hdl_empid      
关闭
关闭