求高效触发器
简单描述:使用update触发器修改某列
问题:在下表中增加update触发器,当a011、a021、a031或a041发生变化后,自动将该列变化前后的差值放到a012、a022、a032、a042列中,同时计算a011、a021、a031和a041这4列的最大值(同一行),放到a091列,如果是a011列的值最大,则将a092列设为1,如果是a021列的值最大,则将a092列设为2,如果是a031列的值最大,则将a092列设为3,如果是a041列的值最大,则将a092列设为4。
简单示意表结构:
CREATE TABLE dbo.tb04 (
aa01 int NOT NULL,
a011 decimal(6,3) NOT NULL,
a012 decimal(6,3) NOT NULL,
a021 decimal(6,3) NOT NULL,
a022 decimal(6,3) NOT NULL,
a031 decimal(6,3) NOT NULL,
a032 decimal(6,3) NOT NULL,
a041 decimal(6,3) NOT NULL,
a042 decimal(6,3) NOT NULL,
a991 decimal(6,3) NOT NULL,
a993 smallint NOT NULL ,
CONSTRAINT pk_tb04 PRIMARY KEY NONCLUSTERED (aa01)) ;
CREATE UNIQUE INDEX idx_01 ON dbo.tb04 (...) ;
CREATE UNIQUE INDEX idx_02 ON dbo.tb04 (...) ;
...
实际表结构比较庞大,访问和变化频率也比较高,因此要求触发器的效率非常好