使用SQL Server 2008 R2中的触发器在更新期间根据另一列的值更改一列的值

时间:2015-05-05 22:29:44

标签: sql-server sql-server-2008-r2

我需要在更新记录时根据同一个表中另一列的值更改列的值。更新表的遗留应用程序无法重新编码以处理此问题。

基本逻辑是:

  • 如果$file1 = file("file1.txt"); $file2 = file("file2.txt"); var_dump(array_diff($file1, $file2)); 不为空,请设置DateShipped

希望我可以在SQL Server 2008 R2中使用更新触发器在数据库级别执行此操作。

谢谢。

1 个答案:

答案 0 :(得分:1)

CREATE TRIGGER tr_OrderLocation_Update
ON TableName 
FOR UPDATE,INSERT
BEGIN
  SET NOCOUNT ON;

  UPDATE t
   SET t.OrderLocation = 4
  FROM TableName t INNER JOIN inserted i 
  ON t.PK_Column = i.PK_Column  --<-- what ever the primary key column
  WHERE i.DateShipped IS NOT NULL
END