如果在oracle触发器中更新该行的任何列,如何从同一行中获取另一列值?
表名:测试 列:ID,NAME 我正在使用ORACLE数据库 我在更新后写了一个触发器 如果我更新了名称列值,那么我想获取更新名称的ID 请给我任何建议如果在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
谢谢……您可以使用
: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?你只是在触发器的其他地方使用它吗?您的触发器当前执行什么操作(请显示您的代码)以及您希望它执行什么操作?