我有两个表zipTbl
和locationTBl
,其中包含四个常用列
zipCode
City
stateCode
salesTaxRate
如果zipCode
中的locationTbl
更改从“91311”更改为“10172”,我希望city
,stateCode
,salesTaxRate
位于{要使用locationTBL
中zipTbl
为新值'10172'的相同值更新{1}}
zipCode
是zipCode
的主键和zipTbl
中的外键。
我使用以下内容创建触发器,但它仅从locationTbl
的第一行更新而不是使用新zipTBL
zipCode
我尝试了几种添加“where locationTbl.zipCode = zipTbl.zipcode”的组合,但我一直收到语法错误
答案 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