2014-11-24 32 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 
相关问题