我有一個表的結構是這樣的:SQL服務器觸發
create table status_master
(
Name varchar(40)
status varchar(10)
)
我需要創建觸發器狀態欄,如果狀態列的值更新值 失敗則觸發調用一個插入commant像:
insert into temp value('s',s's')
你能請任何一個給我解決這個想法嗎?
我有一個表的結構是這樣的:SQL服務器觸發
create table status_master
(
Name varchar(40)
status varchar(10)
)
我需要創建觸發器狀態欄,如果狀態列的值更新值 失敗則觸發調用一個插入commant像:
insert into temp value('s',s's')
你能請任何一個給我解決這個想法嗎?
你在找什麼是INSTEAD OF INSERT,UPDATE觸發器。在你的觸發器中,你嘗試插入或更新你自己的嘗試。如果出錯,則將這些值插入到其他表中(假設它是某種記錄表)。
不知道你真正想要的實現 - 但在SQL Server中,有兩種類型的觸發器:
SQL Server沒有BEFORE INSERT/UPDATE/DELETE觸發器其他RDBMS有。
您可以有任意數量的AFTER觸發器,但每個操作(INSERT,UPDATE,DELETE)只有一個INSTEAD OF觸發器。
更常見的情形是AFTER觸發器,是這樣的:
CREATE TRIGGER trgCheckInsertedValues
ON status_master
AFTER INSERT
AS
BEGIN
INSERT INTO dbo.temp(field1, field2, field3)
SELECT i.Name, i.Status
FROM inserted i
WHERE i.Status = 'FAIL'
END
在這裏,我檢查「插入」僞表含有插入表中的所有行,每一行包含「status = FAIL」,你會插入一些字段到「temp」表中。
再次 - 不知道你真的想要詳細 - 但這將是粗略的大綱如何在SQL Server T-SQL代碼中做到這一點。
馬克
假設你的意思是,如果狀態的新值是失敗了,那麼你看這個:
觸發器引用新的記錄行作爲「插入」和舊的「已刪除」
CREATE TRIGGER trgCheckInsertedValues ON status_master INSERT AS
之後開始
如果inserted.statu S = 'FAIL' INSERT INTO dbo.temp(FIELD1,FIELD2,字段3)
SELECT i.Name,i.Status,FROM插入i的SQL
觸發器 '什麼',用於觸發查詢時在特定表格中執行任何動作,如插入,刪除,更新
http://allinworld99.blogspot.com/2015/04/triggers-in-sql.html
你能澄清嗎?我不明白你真正想要達到什麼...... –
語法錯誤,如你的例子,永遠不會觸發。 – Dave
同意marc_s。什麼是「更新的價值」?狀態?什麼是名爲「temp」的表的結構?你放在那裏的是什麼? –