Добрый день всем кто меня читает. Сразу скажу, я новичок в этом деле.
Необходимо создать триггер, который бы высчитывал разницу между датами в днях и записывал бы это число в поле. Собственно написал тестовый триггер:
create trigger trigger_set_days on guests
for insert, update
as
declare @Date1 datetime
declare @Date2 datetime
declare @TotalDays int
declare @PassportNumber varchar(50)
begin
set @Date1 = (select CheckInDate from inserted)
set @Date2 = (select CheckOutDate from inserted)
set @PassportNumber = (select PassportNumber from inserted)
if ((GETDATE()) < (@Date1))
begin
set @TotalDays = (select datediff(dd, @Date1, @Date2))
update guests set TotalDays = @TotalDays where CheckInDate=@Date1 and CheckOutDate=@PassportNumber
end
else
begin
set @TotalDays = (select datediff(dd, GETDATE(), @Date2))
update guests set TotalDays = @TotalDays where CheckInDate=@Date1 and PassportNumber=@PassportNumber
end
end
Он работает на insert, но когда я вызываю хранимую процедуру, в ней происходит update, она вылетает с ошибкой:
Msg 512, Level 16, State 1, Procedure trigger_set_days, Line 9
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.
Без триггера процедура на update работает без ошибок. Что в ошибке написано я понимаю. Поясните в чем проблема, почему с триггером у меня выводятся множество непонятных значений. Можно ли просмотреть таблицу inserted?