【发布时间】:2016-10-01 19:55:38
【问题描述】:
表名:测试
列:ID、名称
我正在使用 ORACLE 数据库。
更新后我写了一个触发器。
如果我更新名称列值,那么我想获取该更新名称的 ID。
请给我任何建议。
谢谢....
【问题讨论】:
-
您想对更新后的名称的 ID 做什么?你只是在触发器的其他地方使用它吗?您的触发器当前做什么(请显示您的代码)以及您希望它做什么?
表名:测试
列:ID、名称
我正在使用 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
【讨论】: