.
create trigger test_trigger_insert
before insert or update on EMP
for each row
begin
:new.JOB:=upper(:new.JOB);
end;
第一个问题
关键字before指定在触发语句实际执行之前执行该触发器,对吧?
第二个问题
:new.JOB:=upper(:new.JOB);因为用的是NEW,表示新数据,指的是把临时表(inserted)中JOB列转换为大写对吧?
第三个问题(最不解的一个问题)
当真实表(EMP)执行INSERT或者UPDATE操作的时候,由于指定的是BEFORE关键字,所以真实表(EMP)的INSERT或者UPDATE操作并不马上执行,而是先执行这个触发器,在这个触发器中,把临时表(虚拟表)中受影响的JOB列转换为大写。
后面的属于我的猜测:触发器执行完毕,更新了inserted表中的数据,然后再把inserted表的相关行更新到真实表中,是这样的吗?如果不是:我就没搞懂了,该触发器没有对真实表(EMP)的具体操作,那么是如何把临时表(inserted)和真实表(EMP)相关联起来的?难道说是真实表(EMP)的INSERT或者UPDATE操作取的是临时表(inserted)里面的数据?
20 个解决方案
#1
lz发错版了???、
#2
Oracle的,转版吧
#3
我主要是想了解这个触发器实现的细节
#4
没啊,我就是发在SQL版的啊
#5
可能已近实际执行了 但是有事务 可以回滚
#6
LS的你在说什么呀,能不能针对我提出的问题来解答?
#7
看不懂,帮顶
#8
#9
菜鸟学习了
#10
能不能针对我提出的问题来解答?
这样,我换个提问方法
触发条件是INSERT
当触发器指定BEFORE关键字后,会先执行触发器。.
如果我只在触发器里更改了新插入行某个字段的值,当触发器执行完毕的时候,就会跳回引发触发器执行的语句(也就是INSERT操作),那么原触发语句(INSERT)所插入的新行是取的新值吗,如果是,是哪里取到的?
这样,我换个提问方法
触发条件是INSERT
当触发器指定BEFORE关键字后,会先执行触发器。.
如果我只在触发器里更改了新插入行某个字段的值,当触发器执行完毕的时候,就会跳回引发触发器执行的语句(也就是INSERT操作),那么原触发语句(INSERT)所插入的新行是取的新值吗,如果是,是哪里取到的?
#11
建议到Oracle版块提问,听的人比较专业,像你说的BEFORE关键字,MS-SQL是INSTEAD OF的,语法也不一样,所以不好回答。
#12
100分不会连一个我想要的答案都得不到吧
#13
MS-SQL没有BEFORE?
这个是我要书上找到的例子,SQL2000的书
#14
SQL2000 有BEFORE的吧,是新增加的
#15
学习了..........
#16
顶一个。
#17
#18
#19
路过。
#20
结了!!!!
#21
#1
lz发错版了???、
#2
Oracle的,转版吧
#3
我主要是想了解这个触发器实现的细节
#4
没啊,我就是发在SQL版的啊
#5
可能已近实际执行了 但是有事务 可以回滚
#6
LS的你在说什么呀,能不能针对我提出的问题来解答?
#7
看不懂,帮顶
#8
收集些oracle 触发器的 资料
http://blog.csdn.net/xys_777/archive/2010/07/16/5738567.aspx
http://blog.csdn.net/xys_777/archive/2010/07/16/5738565.aspx
http://blog.csdn.net/xys_777/archive/2010/07/16/5738562.aspx
http://blog.csdn.net/xys_777/archive/2010/07/16/5738555.aspx
http://blog.csdn.net/xys_777/archive/2010/07/16/5738567.aspx
http://blog.csdn.net/xys_777/archive/2010/07/16/5738565.aspx
http://blog.csdn.net/xys_777/archive/2010/07/16/5738562.aspx
http://blog.csdn.net/xys_777/archive/2010/07/16/5738555.aspx
#9
菜鸟学习了
#10
能不能针对我提出的问题来解答?
这样,我换个提问方法
触发条件是INSERT
当触发器指定BEFORE关键字后,会先执行触发器。.
如果我只在触发器里更改了新插入行某个字段的值,当触发器执行完毕的时候,就会跳回引发触发器执行的语句(也就是INSERT操作),那么原触发语句(INSERT)所插入的新行是取的新值吗,如果是,是哪里取到的?
这样,我换个提问方法
触发条件是INSERT
当触发器指定BEFORE关键字后,会先执行触发器。.
如果我只在触发器里更改了新插入行某个字段的值,当触发器执行完毕的时候,就会跳回引发触发器执行的语句(也就是INSERT操作),那么原触发语句(INSERT)所插入的新行是取的新值吗,如果是,是哪里取到的?
#11
建议到Oracle版块提问,听的人比较专业,像你说的BEFORE关键字,MS-SQL是INSTEAD OF的,语法也不一样,所以不好回答。
#12
100分不会连一个我想要的答案都得不到吧
#13
MS-SQL没有BEFORE?
这个是我要书上找到的例子,SQL2000的书
#14
SQL2000 有BEFORE的吧,是新增加的
#15
学习了..........
#16
顶一个。
#17
#18
#19
路过。
#20
结了!!!!