У меня есть 2 таблицы dbo.booking
и dbo.seat
с этими структурами:Как вставить SQL Server Update Trigger
dbo.booking
имеет столбцыnoBooking, noSeat, start, [end], statusBooked
dbo.seat
имеет колонкиnoSeat, statusSeat
Каждая строка данных, которые я вставляю в dbo.booking
() Значениеустанавливается в 1), то на dbo.seat
колонке statusSeat
(0 по умолчанию) будет обновлен до 1.
Если statusBooked
обновляется 0, то statusSeat
также обновит 0.
Я имею в виду statusSeat
(0 по по умолчанию) обновит и последует значение statusBooked
.
Я попытался с помощью триггера:
ALTER TRIGGER [dbo].[TriggerUpdateSeat]
ON [dbo].[booking]
AFTER INSERT, UPDATE
AS
UPDATE dbo.seat
SET seat.statusSeat = i.statusBooked
FROM Inserted i
WHERE dbo.seat.noSeat = i.noSeat;
Но проблема в том, когда первый раз, когда я вставить данные на dbo.booking
, dbo.seat
заполнены statusSeat
это необходимо обновить до 1, но он не обновляется 1 не работает , Но для второго и вперед это работает. statusSeat
Значение следующее statusBooked
значение.
Проблема возникает только при первом запуске программы и вводе данных.
Почему?
Кажется, что ваш стол 'seat' ссылается на' booking' через колонку 'noSeat' - правильно? Так зачем вам этот столбец 'statusSeat'? Просто сделайте соединение с таблицей 'dbo.Booking' и зачитайте' statusBooked' - нет смысла иметь два столбца, которые содержат одну и ту же информацию, и беспокоиться о том, чтобы их синхронизировать - избегайте избыточности данных! –
да, резервирование мест с помощью колонки noSeat. , потому что у меня есть место, и я хочу показать, что забронировал и какие имеются, поэтому я добавляю statusSeat. statusBooked предназначен только для статуса транзакции.если бы я не добавил statusSeat, мне будет сложно выполнить в другом случае в моем проекте. так как решить мою проблему выше? @marc_s – azalikaEriya