データベースに3つのテーブルがあります。
Room (num PK, seats, reservation price) Reservation (num PK, client id FK Client(id), room number FK Room(num), reservation date) Client (id PK, name)
予約する前に、トリガーを使って部屋が空いていないか確認したいのですが。
これは私が試したスクリプトです:
CREATE TRIGGER Verify_room_taken ON reservation
INSTEAD OF INSERT
AS
BEGIN
IF EXISTS ( SELECT * FROM reservation
WHERE [room number] = (SELECT [room number] FROM INSERTED)
AND [reservation date] = (SELECT [reservation date] FROM INSERTED))
ROLLBACK TRAN
END
ただし、このスクリプトは正しく機能しません。別の日付と別の部屋に予約を追加すると、カーソルが原因で行った変更が行われません。
これは私が2回目に試したコードです:
ALTER TRIGGER Verifier_chambre_prise ON reservation
INSTEAD OF INSERT
AS
BEGIN
IF NOT EXISTS ( SELECT * FROM reservation
WHERE [n° de chambre] = (SELECT [n° de chambre] FROM INSERTED)
AND [date de réservation] = (SELECT [date de réservation] FROM INSERTED))
INSERT INTO reservation SELECT * FROM INSERTED
END