我需要基本的SQL觸發的一個例子,現在我來解釋一下:SQL Server觸發器更新列值
我有5列(列1,電力,欄3,column4,次)
值表(是數字),他的數據類型是'真實' 而「times」的數據類型是'int'
我會觸發每次「power」變爲0次'增加1
對不起,如果我的英語不完善牛逼!並希望你明白我的意思!如果有什麼不清楚的話告訴我,我會盡力解釋更好! :)
我需要基本的SQL觸發的一個例子,現在我來解釋一下:SQL Server觸發器更新列值
我有5列(列1,電力,欄3,column4,次)
值表(是數字),他的數據類型是'真實' 而「times」的數據類型是'int'
我會觸發每次「power」變爲0次'增加1
對不起,如果我的英語不完善牛逼!並希望你明白我的意思!如果有什麼不清楚的話告訴我,我會盡力解釋更好! :)
假設列1是主鍵,觸發的一般形式如下:
create trigger MyPower
on MyTable
after insert, update
as
if exists (select column1
from inserted i join MyTable m
on i.column1 = m.column1
and i.power = 0)
update MyTable set times = times + 1
where exists (select column1 from inserted i
join MyTable m
on i.column1 = m.column1)
非常感謝,但 「更新MyTable設置功率=功率+ 1」不應該是「設置時間=次+1」? – LdB 2012-03-09 22:57:14
對不起,我誤解了它並將修改答案。 – 2012-03-09 23:13:45
討厭帶壞消息但數數(*)始終存在。 – 2012-03-09 23:27:15
一個可能的基本觸發:
create trigger MyBasicTrigger on MyBasicTable
after insert, update
as
-- Trigger rowcount should not mess with update that triggered it, search for it in documentation provided here
set NoCount ON
-- If power is mentioned in update/insert statement at all
if update(Power)
begin
-- Update times for each changed row that has value of power 0
-- Inserted table holds new values in updated rows
-- You didn't mention your PK column(s), so I assume the name would be "ID"
update MyBasicTable set Times = Times + 1
from MyBasicTable inner join inserted on MyBasicTable.ID = inserted.ID
where Inserted.Power = 0
end
的文檔NOCOUNT和更新(功率)是here。
謝謝尼古拉,我的主鍵是第2列:) – LdB 2012-03-09 23:06:28
澄清一點:您的標題有「MSSQL」,但您有「mysql」標籤......您正在使用哪個標籤? – 2012-03-09 22:33:38
是的,你說的對不起,我錯誤地添加mysql標記也許是一個打字錯誤XD,順便說一句我使用的是mssql。 – LdB 2012-03-09 22:40:53