私のデータベースにはこのテーブルがあります:
予約(PK数、部屋番号、予約日)
予約する前に、トリガーを使って部屋が空いていないか確認したいのですが。
これは私が試したスクリプトです:
ALTER TRIGGER Verifier_chambre_prise 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 TRANSACTION
ELSE
INSERT INTO reservation SELECT * FROM INSERTED
END
存在する予約を追加すると、トランザクションがアクションを停止したというエラーが表示されますが、問題は、[予約日]と[部屋番号]を持つ行を追加しようとするとエラーになります。はすでにテーブルに存在し、この行は削除され、SQLServerがこの行を削除する理由がわかりません。