触发通过db链接在表中添加值

时间:2018-07-03 13:47:25

标签: mysql sql database triggers database-trigger

我正在尝试在表中插入数据,并通过db链接将数据复制到另一个表中,但是触发器给了我重新验证错误。

connect SYSTEM/admin@orcl1;
create database link conorcl1 connect to SYSTEM identified by admin using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = localhost)(PORT = 1521)))(CONNECT_DATA =(SID = orcl2)))';

创建表emp:

create table emp (eno number, ename varchar2(20), address varchar(20), email varchar2(20), salary number);
connect SYSTEM/admin@orcl2;
create database link conorcl2 connect to SYSTEM identified by admin using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = localhost)(PORT = 1521)))(CONNECT_DATA =(SID = orcl1)))';
create table emp (eno number, ename varchar2(20), address varchar(20), email varchar2(20), salary number);

创建触发器emptrigger:

 create or replace trigger emptrigger
    after insert or update of ename,address,email,salary or delete on emp
    for each row begin
    if inserting then 
    INSERT INTO emp@conorc1
    VALUES(:new.eno,:new.ename,:new.address,:new.email,:new.salary); 
    INSERT INTO emp@conorcl2
VALUES(:new.eno,:new.ename,:new.address,:new.email,:new.salary );
end if;
if updating then
update emp@conorcl1 set ename=:new.ename where eno=:new.eno; 
update emp@conorcl2 set ename=:new.ename where eno=:new.eno; 
update emp@conorcl1 set address=:new.address where eno=:new.eno; 
update emp@conorcl2 set address=:new.address where eno=:new.eno; 
update emp@conorcl1 set email=:new.email where eno=:new.eno; 
update emp@conorcl2 set email=:new.email where eno=:new.eno; 
update emp@conorcl1 set salary=:new.salary where eno=:new.eno; 
update emp@conorcl2 set salary=:new.salary where eno=:new.eno; 
end if;
if deleting then
delete from emp@conorcl1 where eno=:new.eno; 
delete from emp@conorcl2 where eno=:new.eno; end if;
end;
/

有人可以帮助我触发我在oracle 9i中执行吗

0 个答案:

没有答案