Триггер после обновления данных вставки - PullRequest
0 голосов
/ 24 апреля 2019

У меня 3 стола бронирования, билетов и мест. Они связаны как Reservation.code_of_ticket = Ticket.code и Ticket.number_of_seat = Seat.number. В таблице Ticket есть атрибут занятости, мне нужно изменить его, когда я вставляю данные в таблицу Reservation. Можно ли это сделать?

CREATE TRIGGER occupancy
ON Reservation
AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE Seat
    INNER JOIN Seat ON Seat.number = Ticket.number_of_seat 
    INNER JOIN Ticket ON Ticket.code = Reservation.code_of_ticket 
    SET occupancy = 'reserved'
    WHERE occupancy = 'free';
END

1 Ответ

3 голосов
/ 24 апреля 2019

Ваша базовая логика верна, синтаксис ужасно неправильный.При работе с триггерами мы используем специальные таблицы inserted и deleted, которые имеют информацию об изменениях данных и имеют ту же структуру, что и базовая таблица.Триггер должен выглядеть примерно так:

CREATE TRIGGER occupancy
ON Reservation
AFTER INSERT
AS
SET NOCOUNT ON;

UPDATE s --This is an alias for the table Seat
SET occypancy = 'reserved'
FROM Seat s --We can use FROM clauses like a normal SELECT
INNER JOIN Ticket t on s.number = t.number_of_seat --Is the seat number global or should you add a theater/auditorium number in your join logic?
INNER JOIN inserted i on t.code = i.code_of_ticket 
WHERE s.occypancy = 'free';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...