2014-11-24 33 views
0

我正在使用SQL Server 2012 Express版和開發人員版(使用最新的Service Pack)。當我非常快速地更新其值時,在列上添加觸發器

我有一個表,將有很多行,我想在其中的一列創建一個觸發器。當我更新它時,會觸發此觸發器(每次只更新一行)。

這是表:

CODE | LEVEL | FLAG | More columns... 
-----+-------+------+--------- 

我想在FLAG欄添加一個觸發器。主要關鍵是CODELEVEL。更新將是:UPDATE CODE SET FLAG = 1 WHERE CODE = N'ASD' AND LEVEL = 1;

在該觸發器上,我將需要值列FLAG

我該怎麼辦?

如果我很快更新CODE表中的很多行,會出現問題嗎? (大約每分鐘1200行)

如果我更新行很快,新的觸發器是否會等待,直到執行前一個觸發器?

+0

表中的主鍵是什麼?您可以在觸發器中加入CODE和插入的表以識別更新的行,並將附加條件添加到WHERE條款。觸發器在與觸發觸發器的'UPDATE'語句相同的上下文中同步執行。由於獨特的主鍵索引,我不希望由於加入主鍵而導致性能成爲問題。 – 2014-11-24 12:53:01

+0

正如你可以閱讀我的問題,CODE和LEVEL是主鍵。 – VansFannel 2014-11-24 13:25:58

+0

對不起,我錯過了你問題中的複合主鍵。 – 2014-11-24 13:30:44

回答

0

下面是一個觸發器示例,它連接到插入的表以標識更新的行並進一步限定要更新的行。由於加入了提供唯一索引的主鍵,我不希望性能成爲關注點。

CREATE TRIGGER TR_CODE_UPDATE 
ON dbo.CODE FOR UPDATE AS 

UPDATE c 
SET FLAG = 1 
FROM dbo.CODE AS c 
JOIN inserted AS i ON 
    i.CODE = c.CODE 
    AND i.LEVEL = c.LEVEL 
WHERE 
    c.CODE = N'ASD' 
    AND c.LEVEL = 1; 

GO 
相關問題