我有带有以下触发器的城市和国家表:
当我更新任何城市时,它应该在审核表中插入一行,显示“ID 为“任何 ID”的城市已被修改”。Cities 表与 Country 表具有外键关系 (Cities.CountryID = Country.ID)。
我期望 trCountryUpdate 做的是,当我更新 Country 行时,它应该将行插入到具有更新 Country ID 的所有城市的 Audit 表中。
但是,当我用 ID 1 更新 Country 的名称时,它应该在 Audit 表中插入 5 行,因为 CountryID 1 有 5 个对应的 Cities。但是,它总是插入 1 行。
请让我知道当更新 ID 为 1 的国家/地区时,应该如何将 5 行插入到国家 ID 为 1 的 5 个城市的审计表中。
PS:
ALTER trigger [dbo].[trCityUpdate]
on [dbo].[Cities]
for update
as
declare @cityIdModified int;
select @cityIdModified = ID from inserted;
Insert into Audit values ('The City with ID ' + cast(@cityIdModified as varchar(1)) + ' has been modified')
go
ALTER trigger [dbo].[trCountryUpdate]
on [dbo].[Countries]
for update
as
declare @countryIdModified int;
select @countryIdModified = ID from inserted;
update ci
set ci.CountryID = @countryIdModified
from Cities ci
join Countries co on co.ID = ci.CountryID
where ci.CountryID = @countryIdModified