У меня есть таблицы Города и Страны со следующими триггерами:
Когда я обновляю любой Город, он должен вставить строку в АудитТаблица с надписью "Город с идентификатором" любой идентификатор "был изменен".Таблица городов имеет связь по внешнему ключу с таблицей стран (Cities.CountryID = Страны.ID).
Что я ожидаю от trCountryUpdate, так это то, что когда я обновляю строку "Страна", она должна вставлять строку в таблицу аудита для всех городов с обновленным идентификатором страны.
Однако, когда я обновляю название страны с идентификатором 1, она должна была вставить 5 строк в таблицу аудита, поскольку для CountryID 1 есть 5 соответствующих городов. Однако всегда вставляется 1 строка.
Пожалуйста, дайте мне знать, что нужно сделать, чтобы вставить 5 строк в таблицу аудита для 5 городов с CountryID 1 при обновлении страны с ID 1.
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