对于我的生活,我无法让以下查询工作......基本上它是对以下票证的修改: 在 oracle 中使用 Merge 语句触发。
CREATE OR REPLACE TRIGGER TABLE_UPDATE
AFTER INSERT OR UPDATE ON DIM_TABLE
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
IF INSERTING OR UPDATING
THEN
MERGE INTO DIM_TABLE T_1
USING( SELECT COL_1, max(VALID_FROM) AS LAST_DATE FROM
DIM_TABLE
GROUP BY COL_1) T_2
ON (T_1. COL_1= T_2. COL_1)
WHEN NOT MATCHED THEN INSERT (T_1. VALID_FROM) VALUES(SYSDATE)
WHEN MATCHED THEN
UPDATE
SET T_1.VALID_UNTIL = T_2.LAST_DATE
WHERE T_1. VALID_UNTIL is null
AND T_1. VALID_FROM <> T_2.LAST_DATE;
COMMIT;
END IF;
END;
所需功能:将一个值输入数据库 (COL_1)。如果该列没有匹配项,则将 VALID_FROM 日期输入为 sysdate。如果匹配,则脚本应更新前一行的 VALID_UNTIL 值(直到现在它仍为空,因为它仍然有效)。
我不断收到以下错误:死锁和最大递归级别超出(50)