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

如果在oracle触发器中更新该行的任何列,如何从同一行中获取另一列值?,oracle,triggers,Oracle,Triggers,表名:测试 列:ID,NAME 我正在使用ORACLE数据库 我在更新后写了一个触发器 如果我更新了名称列值,那么我想获取更新名称的ID 请给我任何建议 谢谢……您可以使用:OLD检查以下示例 CREATE OR REPLACE TRIGGER EX_TRIGGER AFTER UPDATE ON TAB1 BEGIN SET VAR = :OLD.ID END; Oracle安装程序: CREATE TABLE table_name ( id INT, name VARCHAR2(20

表名:测试

列:ID,NAME

我正在使用ORACLE数据库

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

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

请给我任何建议


谢谢……

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

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

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

您想如何处理更新名称的ID?你只是在触发器的其他地方使用它吗?您的触发器当前执行什么操作(请显示您的代码)以及您希望它执行什么操作?