こんにちは趣味目的私はホテルシステムを再構築するMS SQL Serverデータベースを使用してC#アプリケーションを作成しようとしています。私は今datedifferenceを計算するSQLトリガを作成しようとしています。ご予約は6週間(42日)を超えることはできません。しかし、たとえその差が1日であっても、42日より短い日程の予約をしても、私の引き金は消えます。私は何が間違っているのか分かりません。datediffをカウントするトリガー
マイトリガー:
create trigger trigger_reservation
on reservation
after update, insert
as
if exists
(
select reservationid, DATEDIFF(dd,Startdate,Enddate)
from reservation
group by reservationid, enddate, startdate
having DATEDIFF(dd,Startdate,Enddate) > 42
)
begin
raiserror('Error: Reservation may not be longer than 6 weeks',16, 1)
rollback transaction
end
あなたのトリガーは挿入している行だけではなく、全体のテーブルをチェックしていますか?データテーブルに既に42日以上の予約がある場合、トリガーは常に起動します。 –
あなたは正しいです、確かに42日より長いいくつかの予約があります(ランダムに生成されたデータ)。これを修正するにはどうしたらいいですか? – glnxhjeh
基本的には、トリガーでアクセスできる「特別な」テーブルについて知っておく必要があります。ここでは、「挿入」したいテーブルが必要です。私はpetermが彼の答えを更新したのを見て、それはあなたが必要とする通りに正確に動作するはずです... –