【问题标题】:How get another column value from the same row if we update any column of that row in oracle trigger?如果我们在 oracle 触发器中更新该行的任何列,如何从同一行获取另一个列值?
【发布时间】:2016-10-01 19:55:38
【问题描述】:

表名:测试

列:ID、名称

我正在使用 ORACLE 数据库。

更新后我写了一个触发器。

如果我更新名称列值,那么我想获取该更新名称的 ID。

请给我任何建议。

谢谢....

【问题讨论】:

  • 您想对更新后的名称的 ID 做什么?你只是在触发器的其他地方使用它吗?您的触发器当前做什么(请显示您的代码)以及您希望它做什么?

标签: oracle triggers


【解决方案1】:

你可以使用:OLD查看下面的例子

CREATE OR REPLACE TRIGGER EX_TRIGGER
AFTER UPDATE ON TAB1
BEGIN
   SET VAR = :OLD.ID
END;

【讨论】:

    【解决方案2】:

    Oracle 设置

    CREATE TABLE table_name ( id INT, name VARCHAR2(20) );
    CREATE TABLE table_name_log( prev_id INT, id INT, update_date DATE );
    
    CREATE TRIGGER log_id
    AFTER UPDATE
      ON table_name
      FOR EACH ROW
    BEGIN
      IF :old.name <> :new.name THEN
        INSERT INTO table_name_log (
          prev_id, id, update_date
        ) VALUES (
          :old.id, :new.id, SYSDATE
        );
      END IF;
    END;
    /
    
    INSERT INTO table_name
    SELECT 1, 'Alf' FROM DUAL UNION ALL
    SELECT 2, 'Ben' FROM DUAL UNION ALL
    SELECT 3, 'Carl' FROM DUAL;
    

    查询

    UPDATE table_name SET name = 'Ann' WHERE id = 1;
    
    SELECT * FROM table_name_log;
    

    输出

    PREV_ID ID UPDATE_DATE
    ------- -- -------------------
          1  1 2016-06-02 09:56:23
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 2016-06-17
      • 2012-04-20
      • 2016-05-02
      • 1970-01-01
      • 2021-09-22
      相关资源
      最近更新 更多