如果我们更新oracle触发器中该行的任何列,如何从同一行获取另一个列值?

时间:2016-06-02 07:51:31

标签: oracle triggers

表名:TEST

COLUMNS:ID,NAME

我正在使用ORACLE数据库。

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

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

请给我任何建议。

...谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用:OLD查看以下示例

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

答案 1 :(得分:0)

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