我想问下SQL 2005中的触发器的for,instead of,after3种触发器的区别~知道的请告诉下~具体举个例子说明下遇到相应的语句~它是怎么执行的吧~说得好的马上加分!

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/27 02:46:31
我想问下SQL2005中的触发器的for,insteadof,after3种触发器的区别~知道的请告诉下~具体举个例子说明下遇到相应的语句~它是怎么执行的吧~说得好的马上加分!我想问下SQL2005中

我想问下SQL 2005中的触发器的for,instead of,after3种触发器的区别~知道的请告诉下~具体举个例子说明下遇到相应的语句~它是怎么执行的吧~说得好的马上加分!
我想问下SQL 2005中的触发器的for,instead of,after3种触发器的区别~
知道的请告诉下~具体举个例子说明下遇到相应的语句~它是怎么执行的吧~说得好的马上加分!

我想问下SQL 2005中的触发器的for,instead of,after3种触发器的区别~知道的请告诉下~具体举个例子说明下遇到相应的语句~它是怎么执行的吧~说得好的马上加分!
FOR | AFTER
AFTER 指定触发器仅在触发 SQL 语句中指定的所有操作都已成功执行时才被触发.所有的引用级联操作和约束检查也必须在激发此触发器之前成功完成.
如果仅指定 FOR 关键字,则 AFTER 为默认值.
不能对视图定义 AFTER 触发器.
INSTEAD OF
指定执行 DML 触发器而不是触发 SQL 语句,因此,其优先级高于触发语句的操作.
如果仅指定 FOR 关键字,则 AFTER 为默认值.
也就是说,FOR = AFTER.
下面是一个触发器的例子:
-- 创建测试主表.
CREATE TABLE test_main (
id INT,
value VARCHAR(10),
PRIMARY KEY(id)
);
-- 创建测试子表.
CREATE TABLE test_sub (
id INT,
main_id INT,
value VARCHAR(10),
PRIMARY KEY(id)
);
-- 创建外键.
ALTER TABLE test_sub
ADD CONSTRAINT main_id_cons
FOREIGN KEY (main_id) REFERENCES test_main;
-- 创建 FOR 触发器.
CREATE TRIGGER InsertTest
ON test_sub
FOR INSERT
AS
BEGIN
PRINT('INSERT test_sub!');
END;
Go
INSERT INTO test_sub VALUES( 100,100,'100');
消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 FOREIGN KEY 约束"main_id_cons"冲突.该冲突发生于数据库"TestDev",表"dbo.test_main",column 'id'.
语句已终止.
从上面的结果可以看到,由于外键冲突,插入失败,导致触发器也没有被执行.
-- 修改为 AFTER 触发器.
ALTER TRIGGER InsertTest
ON test_sub
AFTER INSERT
.
INSERT INTO test_sub VALUES( 100,100,'100');
消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 FOREIGN KEY 约束"main_id_cons"冲突.该冲突发生于数据库"TestDev",表"dbo.test_main",column 'id'.
语句已终止.
可以看到,AFTER 运行结果与 FOR 一样.
-- 修改为 INSTEAD OF 触发器.
ALTER TRIGGER InsertTest
ON test_sub
INSTEAD OF INSERT
.
INSERT INTO test_sub VALUES( 100,100,'100');
INSERT test_sub!
(1 行受影响)
从上面的结果看到,触发器被执行了.
但是 test_sub 中并没有 100,100,'100' 的数据.
原因在于:
INSTEAD OF 指定执行 DML 触发器而不是触发 SQL 语句
也就是说 当你的触发器是 INSTEAD OF INSERT 的时候
你的 INSERT 语句,将直接执行这个触发器
而不是等你 INSERT 语句执行完了,数据写到表里面了以后,才触发.

我想问下SQL 2005中的触发器的for,instead of,after3种触发器的区别~知道的请告诉下~具体举个例子说明下遇到相应的语句~它是怎么执行的吧~说得好的马上加分! 在SQL语句的定义我想问下,红框中的./> 我想问下这个SQL语句哪里出了问题啊? 如何定义一个触发器我想删除数据库表中的记录,但是表中有与外表关联的字段,要删除这条记录,并把相关表的记录一起删除,想创建一个触发器,请给一个实例,或触发器代码 我想问下门控RS触发器的特性方程Q的(n+1)次方等于S+RQ的n次方是怎么来的?为什么表达式是这个? 我想问下门控RS触发器的特性方程Q的(n+1)次方等于S+RQ的n次方是怎么来的?为什么表达式是这个? 触发器before和after有什么区别?1.不要复制粘贴,可以举个例子.2.还有sql server 2005 怎么不光before没有,连after也没有?3.在sql server里建一个工资的表 如工资表,工资不足3000,自动改为3000.(用before触 电平触发器和边沿触发器的区别? 什么是触发器,使用触发器的好处是什么 SQL 触发器与一定范围内的随机数产生想写一个随机数函数 在 2 8 14 29 42 五个数中随机选选中一个函数 同时需要一个trigger 需要循环插入记录 字段如下 ID为 0-9999中的随机数 level为1或2 type为1-9 数字电路中的触发器怎么理解? 触发器组成的电路 SR触发器的约束条件 触发器的FOR是什么意思? 基本RS触发器、同步RS触发器、边沿JK触发器和T触发器各自的主要特点 我想问下,大雾是不是有毒的? 我想问下,天堂的含义是什么? 我想问下哪里的净水剂好点