Sql 当更新另一个表字段时,从表中更新字段的触发器

Sql 当更新另一个表字段时,从表中更新字段的触发器,sql,oracle-sqldeveloper,Sql,Oracle Sqldeveloper,我有两张桌子,一张叫t_工程师,一张叫t_储物柜 当我更新表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.lock

我有两张桌子,一张叫t_工程师,一张叫t_储物柜

当我更新表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;
谢谢

表格如下:

模式是:

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";
希望这能为您提供足够的信息来了解问题所在……

尝试以下方法:

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;

表结构中有一个缺陷

工程师和储物柜之间的关系是什么? 是一对多,多对多吗

在任何情况下,您不需要在两个表中都有工程师id和储物柜id。

要么在t_locker中有工程师id和储物柜id,要么在t_engineer中只有工程师id


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

确实有效,谢谢,但这让我意识到这不是我想要的触发器:(我需要一个将在t_工程师表中插入新行数据时更新t_工程师表中的locker_id字段的触发器。我假设我还需要在触发器中包含两个表中的工程师_id必须相等的位置。如果您能帮我解决这一问题,我将不胜感激!!目前为止我已经有了这一点,但没有工作:为每行插入t_储物柜后创建或替换触发器ID t_工程师ID开始更新t_工程师设置储物柜ID=:NEW.locker_ID其中t_工程师.locker_ID=:OLD.locker_ID;结束;谢谢-我收到此错误-错误报告:ORA-04073:列列表对此触发器类型无效04073.00000-“列列表对此触发器类型无效"*原因:为非更新触发器类型指定了列列表。*操作:删除列列表。再试一次,如果不起作用,请编写t_engineer和t_lockers表的列,但这应该起作用。再试一次,仍然不起作用,…我已用更多信息更新了主要问题…请提供问题的架构详细信息这种类型。另外,请提供有关表的前后值示例。这将有助于以较少的迭代次数结束问题。我已编辑了上面的问题,这可能会有所帮助。谢谢