Microsoft SQL Server触发器更新表行,并更改其他表列

时间:2015-10-28 20:22:35

标签: sql sql-server triggers

我有两个表zipTbllocationTBl,其中包含四个常用列

zipCode
City
stateCode
salesTaxRate

如果zipCode中的locationTbl更改从“91311”更改为“10172”,我希望citystateCodesalesTaxRate位于{要使用locationTBLzipTbl为新值'10172'的相同值更新{1}}

zipCodezipCode的主键和zipTbl中的外键。

我使用以下内容创建触发器,但它仅从locationTbl的第一行更新而不是使用新zipTBL

的行更新
zipCode

我尝试了几种添加“where locationTbl.zipCode = zipTbl.zipcode”的组合,但我一直收到语法错误

2 个答案:

答案 0 :(得分:1)

我认为就是这样:

UPDATE locationTbl
SET locationTbl.city=zipTbl.city,
    LocationTbl.stateCode=zipTbl.stateCode,
    locationTbl.salesTaxRate=zipTbl.salesTaxRate
FROM locationTbl t1
JOIN inserted i
  ON t1.zipCode=i.zipCode
JOIN zipTbl
  ON i.zipCode=zipTbl.zipCode

答案 1 :(得分:0)

你有没有试过像

这样的东西
CREATE TRIGGER trg_update_city_state on dbo.locationTbl AFTER Update 
AS 
BEGIN 
  UPDATE locationTbl 
  SET locationTbl.city = INSERTED.city, 
  LocationTbl.stateCode = INSERTED.stateCode, 
  locationTbl.salesTaxRate = INSERTED.salesTaxRate 
  FROM INSERTED
  WHERE locationTbl.zipCode = INSERTED.zipcode