当更新另一个表字段时,触发从表更新字段

时间:2015-07-30 14:46:56

标签: sql oracle-sqldeveloper

我有两个名为t_engineer的表和一个名为t_lockers

的表

当我更新表t_locker中的locker_id时,t_engineer表已经在该表的locker_id字段中包含数据,因此我想使用放在t_lockers表中的新数据覆盖此数据。

这是我到目前为止所做的:

 CREATE or REPLACE 
TRIGGER IDT_Engineer_ID
AFTER UPDATE OF locker_id ON t_lockers
FOR EACH ROW
BEGIN
update t_engineer.locker_id
set t_engineer.locker_id = t_lockers.locker_id
where t_engineer.locker_id = t_engineer.locker_id
END;

谢谢

表格是: enter image description here

enter image description here

,架构是:

CREATE TABLESPACE "3PLData"
DATAFILE '3PLData.dbf' 
SIZE 5G
REUSE
AUTOEXTEND ON NEXT 5G MAXSIZE 10G;

CREATE USER "3PL_SCHEMA" IDENTIFIED BY "7BK8-vE769J.7azQ"
DEFAULT TABLESPACE "3PLData"
TEMPORARY TABLESPACE "TEMP";

GRANT "DBA" TO "3PL_SCHEMA" ;
GRANT "CONNECT" TO "3PL_SCHEMA" ;
GRANT "RESOURCE" TO "3PL_SCHEMA" ;
ALTER USER "3PL_SCHEMA" DEFAULT ROLE "DBA","CONNECT","RESOURCE";

希望这能为您提供足够的信息以查看问题所在......

2 个答案:

答案 0 :(得分:0)

试试这个:

CREATE OR REPLACE TRIGGER IDT_Engineer_ID
AFTER INSERT ON t_lockers FOR EACH ROW
begin
    insert into t_engineer (locker_id) values (:NEW.locker_id);
end;

答案 1 :(得分:0)

表格结构存在缺陷。

工程师和工作人员之间的关系是什么?更衣室? 它是一对多,多对多吗?

在任何情况下,您都不需要在两个表格中都有engineer_id和locker_id。

要么在t_locker中有engineer_id和locker_id,并且在t_engineer中只有engineer_id

在t_locker中有locker_id,在t_engineer中有engineer_id和locker_id