oracle 数据库的触发器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 数据库的触发器相关的知识,希望对你有一定的参考价值。
oracle 数据库的触发器,在A表添加一条数据,然后将这条数据与B表关联查询到几条数据,添加到C表中怎么写?
create or replace trigger add_b_to_cafter insert on A
for each row
begin
if inserting then
insert into C(字段1,字段2,......) select 字段1,字段2,...... from B where <你的关联条件>
end if;
end;
/
这个就是对的呀 参考技术A create or replace trigger add_b_to_c
after insert on A
for each row
begin
if inserting then
insert into C(字段1,字段2,......) select 字段1,字段2,...... from B where <你的关联条件>
end if;
end;
/ 参考技术B 这样就可以了。
create or replace trigger tri_test
after insert on table_a
for each row
DECLARE
-- local variables here
BEGIN
INSERT INTO Table_c
SELECT Table_a.Col_1,
Table_b.Col_1
FROM Table_a,
Table_b
WHERE Table_a.Col_2 = Table_b.Col_2;
END Tri_Test;
oracle触发器中需要通过字段来进行判断
比如建立一个触发器,当A表中的B字段数据是'C'的时候,进行后面的PL/SQL语句,我用
if exists (select............)会报错 function or pseudo-column 'EXISTS' may be used inside a SQL statement only
有没有解决方法或者更好的判断语句
create or replace trigger "TRIG_TEST_A"
before insert on "A"
for each row
begin
if inserting then
if :NEW."BM" = 'C' then --如果插入的A记录,BM字段等于C,则写入A_BAK
insert into A_BAK
(BM, TEACHERS, ID)
values
(:NEW."BM", :NEW."TEACHERS", :NEW."ID");
end if;
end if;
end;
具体需求,根据触发器的语法进行调整
追问if inserting
....
end if
这个判断语句是做什么的
INSERTING:当触发事件是INSERT时,取值为TRUE,否则为FALSE。
本回答被提问者采纳 参考技术B 触发器的语法CREATE [OR REPLACE] TRIGGER trigger_name
BEFORE | AFTER
INSERT | DELETE | UPDATE [OF column [, column …]]
[OR INSERT | DELETE | UPDATE [OF column [, column …]]...]
ON [schema.]table_name | [schema.]view_name
[REFERENCING OLD [AS] old | NEW [AS] new| PARENT as parent]
[FOR EACH ROW ]
[WHEN condition]
update后面可以跟 of column,column..... on tablename
把需要触发的字段写上,不触发的就别写了
以上是关于oracle 数据库的触发器的主要内容,如果未能解决你的问题,请参考以下文章