如何在触发器中获取SQL语句和执行前的值
没有用过什么触发器,弄一个弄的纠结啊createorreplacetriggercredit3.tri_updateafterupdateofinfo2oncom_bas...
没有用过什么触发器 ,弄一个弄的纠结啊
create or replace trigger credit3.tri_update
after update of info2 on com_base for each row
begin
update aptitude set info2='1'where aptitude.companyid=com_base.id;
end;
我想在更新com_base 中info2=‘1’是更新aptitude中的数据,但是这个where aptitude.companyid=com_base.id;条件获得上面执行的com_base.id怎么获取啊?
谢谢各位了
oracle数据库,我是希望当com_base更新这info2字段时,根据当前更新的这个com_base的id
更新aptitude,所以条件where aptitude.companyid=com_base.id; 展开
create or replace trigger credit3.tri_update
after update of info2 on com_base for each row
begin
update aptitude set info2='1'where aptitude.companyid=com_base.id;
end;
我想在更新com_base 中info2=‘1’是更新aptitude中的数据,但是这个where aptitude.companyid=com_base.id;条件获得上面执行的com_base.id怎么获取啊?
谢谢各位了
oracle数据库,我是希望当com_base更新这info2字段时,根据当前更新的这个com_base的id
更新aptitude,所以条件where aptitude.companyid=com_base.id; 展开
3个回答
2013-03-25
展开全部
目测语法是 Oracle 数据库的语法。
那么, 如果这个where aptitude.companyid=com_base.id;条件获差祥得上面执行的com_base.id怎么获取啊?虚腔搏
可以通过 :old.id 或者 :new.id 来获取。
例圆销如:
SQL> CREATE OR REPLACE TRIGGER BeforeUpdateTest
2 BEFORE UPDATE ON test_trigger_table
3 FOR EACH ROW
4 BEGIN
5 dbms_output.put_line('BEFORE UPDATE');
6 dbms_output.put_line('Old Name = ' || :old.name);
7 dbms_output.put_line('New Name = ' || :new.name);
8 END;
9 /
Trigger created.
SQL>
SQL> UPDATE test_trigger_table SET name = 'XYZ' WHERE id = 1;
BEFORE UPDATE
Old Name = ABC
New Name = XYZ
1 row updated.
那么, 如果这个where aptitude.companyid=com_base.id;条件获差祥得上面执行的com_base.id怎么获取啊?虚腔搏
可以通过 :old.id 或者 :new.id 来获取。
例圆销如:
SQL> CREATE OR REPLACE TRIGGER BeforeUpdateTest
2 BEFORE UPDATE ON test_trigger_table
3 FOR EACH ROW
4 BEGIN
5 dbms_output.put_line('BEFORE UPDATE');
6 dbms_output.put_line('Old Name = ' || :old.name);
7 dbms_output.put_line('New Name = ' || :new.name);
8 END;
9 /
Trigger created.
SQL>
SQL> UPDATE test_trigger_table SET name = 'XYZ' WHERE id = 1;
BEFORE UPDATE
Old Name = ABC
New Name = XYZ
1 row updated.
追问
你这个:new 和 :old只对触发后要执行的aptitude表可以吧,好像不行,上面那个com_base的id获取不了
追答
update aptitude set info2='1'where aptitude.companyid=com_base.id;
修改为
update aptitude set info2='1' where aptitude.companyid= :new.id;
即可
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询