Pet*_*din 4 sql-server triggers
我有一个有两列的表,我需要一个(columnB)作为另一个()的副本columnA.因此,如果插入或更新了一行,我希望将值columnA复制到columnB.
这就是我现在拥有的:
CREATE TRIGGER tUpdateColB
ON products
FOR INSERT, UPDATE AS
BEGIN
UPDATE table
SET columnB = columnA
END
Run Code Online (Sandbox Code Playgroud)
现在的问题是查询会影响所有行,而不仅仅是更新或插入的行.我该如何解决这个问题?
假设您有一个主键列,id(并且您应该有一个主键),请加入inserted表(使触发器能够处理多行):
CREATE TRIGGER tUpdateColB
ON products
FOR INSERT, UPDATE AS
BEGIN
UPDATE table
SET t.columnB = i.columnA
FROM table t INNER JOIN inserted i ON t.id = i.id
END
Run Code Online (Sandbox Code Playgroud)
但是,如果ColumnB始终是ColumnA的副本,为什么不创建Computed列呢?