我有以下表格:如何將更新的記錄移動到歷史記錄表中?
CREATE TABLE FE_USER
(
userid int identity (321,4) CONSTRAINT userid_pk PRIMARY KEY,
username varchar(40)
);
其對應的歷史表是
CREATE TABLE FE_USER_HIST
(
userid int,
username varchar(40),
v_action varchar(50)
);
每天上FE_USER表發生了插入或更新的時間,我需要輸入 這個新插入的記錄或更新記錄到歷史記錄表中。
我該如何在t-sql中編寫觸發器?
這裏是我的pseducode,但我得到了很多的錯誤:
CREATE OR REPLACE TRIGGER user_to_hist
AFTER UPDATE OR DELETE
ON FE_USER
FOR EACH ROW
DECLARE
v_action varchar(50);
BEGIN
v_action := CASE WHEN UPDATING THEN 'UPDATE' ELSE 'DELETE' END;
INSERT INTO FE_USER_HIS(userid, username, v_action)
SELECT :OLD.userid, :OLD.username, v_action
FROM .......;
END;
甚至是否有一個觸發的方式來確定所採取的行動(即刪除或更新)?我試圖想出一個單一的觸發器,想不到一個辦法。 – LittleBobbyTables 2010-07-26 00:10:26
@LittleBobby - 你可以通過主鍵將完整的外連接插入DELETED,以確定該行是剛被刪除,剛插入還是兩者(更新) – 2010-07-26 00:14:19
...雖然我猜如果PK本身更新了2個方法會產生不同的結果。 – 2010-07-26 01:00:27