我試圖創建完成以下更新觸發問題之前
觸發檢查場ACTION_TYPE行中,它是具有更新請求
如果行(更新前的值)有一個ACTION_TYPE爲空,我想插入值/字符串「更改」。
如果行(更新之前)有一個包含字符串'Add'的ACTION_TYPE,我希望保持該值。
如果行(更新之前)有一個包含字符串'Change'的ACTION_TYPE,我希望保留該值。
CREATE TRIGGER tbl8_change
ON HOLIDAY_DATE_TABLE
BEFORE UPDATE
AS
BEGIN
IF ((SELECT ACTION_TYPE FROM HOLIDAY_DATE_TABLE
WHERE
inserted.HID = HOLIDAY_DATE_TABLE.HID) == NULL) THEN
INSERT INTO HOLIDAY_DATE_TABLE (ACTION_TYPE)
VALUES ('Changed')
WHERE inserted.HID = HOLIDAY_DATE_TABLE.HID;
IF ((SELECT ACTION_TYPE FROM HOLIDAY_DATE_TABLE
WHERE
inserted.HID = HOLIDAY_DATE_TABLE.HID) == 'Changed') THEN
INSERT INTO HOLIDAY_DATE_TABLE (ACTION_TYPE)
VALUES ('Changed')
WHERE inserted.HID = HOLIDAY_DATE_TABLE.HID;
IF ((SELECT ACTION_TYPE FROM HOLIDAY_DATE_TABLE
WHERE
inserted.HID = HOLIDAY_DATE_TABLE.HID) == 'Add') THEN
INSERT INTO HOLIDAY_DATE_TABLE (ACTION_TYPE)
VALUES ('Add')
WHERE inserted.HID = HOLIDAY_DATE_TABLE.HID;
END
我的語法有點不對,任何幫助將不勝感激。
而不是將插入的錶鏈接到基表,您可以檢查已刪除的表。另外,如果您執行INSERT而不是UPDATE,則您現有的行將保留在表中。 – 2014-10-06 18:12:54
SQL Server沒有'BEFORE'觸發器.....只有'AFTER/ON'或'INSTEAD OF ....' – 2014-10-06 18:17:13
檢出'INSTEAD OF'觸發器[使用INSTEAD OF觸發器](http: //www.mssqltips.com/sqlservertip/1804/using-instead-of-triggers-in-sql-server-for-dml-operations/) – Tak 2014-10-06 18:55:19