1
我有一个cust_info表,需要跟踪更新并删除它。我创建了2个新表(archive_customers与cust_info相同,但customers_hist包含两个额外的实例(changed_by和change_date))。用于跟踪更改历史记录的SQL触发器 - ORACLE DB
CREATE TABLE CUST_INFO
(
CUST_ID NUMBER(15),
CUST_F_NAME VARCHAR(20),
CUST_L_NAME VARCHAR(20),
CUST_ADDRESS VARCHAR(40),
CITY VARCHAR(30),
STATE VARCHAR(30),
ZIP NUMBER,
PHONE VARCHAR(12),
PRIMARY KEY (CUST_ID)
);
我正在寻找类似的问题,这是我走到这一步:
CREATE OR REPLACE TRIGGER TRIGGER_UPDATE
BEFORE UPDATE ON CUST_INFO
FOR EACH ROW
BEGIN
INSERT INTO CUSTOMERS_HIST
(
CUST_ID,
CUST_F_NAME,
CUST_L_NAME,
CUST_ADDRESS,
CITY,
STATE,
ZIP,
PHONE,
SYSDATE
)
SELECT
OLD.CUST_ID,
OLD.CUST_F_NAME,
OLD.CUST_L_NAME,
OLD.CUST_ADDRESS,
OLD.CITY,
OLD.STATE,
OLD.ZIP,
OLD.PHONE
FROM CUST_INFO
END;
CREATE OR REPLACE TRIGGER TRIGGER_DELETE
BEFORE DELETE ON CUST_INFO
FOR EACH ROW
BEGIN
INSERT INTO ARCHIVE_CUSTOMERS
(
CUST_ID,
CUST_F_NAME,
CUST_L_NAME,
CUST_ADDRESS,
CITY,
STATE,
ZIP,
PHONE
)
SELECT
OLD.CUST_ID,
OLD.CUST_F_NAME,
OLD.CUST_L_NAME,
OLD.CUST_ADDRESS,
OLD.CITY,
OLD.STATE,
OLD.ZIP,
OLD.PHONE
FROM CUST_INFO
END;
另外,我不知道怎么去填充change_by和CHANGE_DATE?
如果您需要更多信息,请发表评论。
谢谢