使用Oracle中的触发器在INSERT之后在同一个表中的UPDATE列

维诺伊

插入完成后,我需要更新同一表中的一列。INSERT已经编码,无法更改。因此,我们将使用TRIGGER方法来更新一个列值。

create or replace TRIGGER "BLT_TRIGGER" 
AFTER INSERT ON BLT_MAPPING 
FOR EACH ROW
BEGIN
UPDATE BLT_MAPPING 
SET FIELD_ID = (SELECT CASE WHEN CORR_TI = 'B' THEN '12345' ELSE '54321' END 
AS INSTITUTION FROM BROKER CO,LOAN LO
WHERE LO.CORR_ID = CO.CORR_ID AND LO.LOAN_ID = loanid_in_BLT_MAPPING_table 
whcih_got_inserted )
END;

我正在清除错误。我在触发器中犯了什么错误。

伊尔森

您是否要更新刚插入的同一行?在这种情况下,您要使其成为BEFORE INSERT触发器,并:NEW.fieldid在将其插入表之前进行更改像这样:

create or replace TRIGGER "BLT_TRIGGER" 
BEFORE INSERT ON BLT_MAPPING 
FOR EACH ROW
    l_new_fieldid     number; -- Or whatever the correct datatype is
BEGIN

    SELECT CASE WHEN CORR_TI = 'B' THEN '12345' ELSE '54321' END 
      INTO l_new_fieldid
      FROM BROKER CO,LOAN LO
     WHERE LO.CORR_ID = CO.CORR_ID 
       AND LO.LOAN_ID = :NEW.loanid;

    :NEW.fieldid := l_new_fieldid;

END;

但这是一个次等的解决方案。触发器会掩盖您实际上试图执行的操作,并且在出现问题时很难调试。更好的解决方案是根据您INSERT要实际执行的操作来更正您的陈述。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用删除触发器从同一个表中删除行?

如何在更新表后运行触发器然后在同一个表中运行语句更新

使用 MySQL AFTER UPDATE 触发器根据 INT 值更改更新另一个表中的列

SQL:如何在同一个表中合并 2 个两列并删除之后未使用的列?

如何在同一表的UPDATE触发器中更新表中的列?

PL/SQL 触发器在更新或插入后更新同一个表

我想通过触发器更新同一个表的值

如何使用Postgres触发器双重写入一个表中的两列?

使用触发器更新另一个表中的列

当列在另一个触发器中更改时,ORACLE“更新前”触发器不会触发

编写一个触发器函数以根据 postgresql 中同一表中的另一列值更新列值

获取同一个表中的相关列

Oracle触发器不会在另一个表中插入值

MySQL 触发器适用于同一个表中的一个字段,而不适用于第二个字段

mysql触发器,用于在另一个表中的新行之后更新表

如何使用触发器中另一个表中的信息?

插入后使用SQL Server触发器更新另一个表中的列

在插入MySQL触发器之后以更新值或在另一个表中插入新行

触发器将同一行复制到另一个表中

使用 group by 更新同一个表中的两列?

使用同一个表中的计算数据更新 PostgresSQL 列

在仅更新SQL Server 2008中同一表中的特定列之后,更新触发器中的一列

在插入触发器之后,使用INSERT中的值

是否可以创建触发器以在Oracle中的另一个表上插入表的数据?

比较表中的两个值并使用触发器更新另一列

从同一个 oracle SQL 表中复制行并更改一些列值

Quartz.NET 2.6.1:同一个Job同时触发多个触发器,但只需要一个触发器发生

使用触发器将数据从数据库中的一个表复制到同一SQL Server上另一个数据库中的表的精确副本

通过使用PostgreSQL中的触发器将数据从一个表移动到另一表