sql >> データベース >  >> RDS >> Sqlserver

SQLServer2008で一意の日付範囲フィールドを適用する

    この条件の方が適切だと思います:

    IF EXISTS ( SELECT  * --No need to choose columns in an EXISTS
            FROM    tbl_Example t1
             inner join
                    tbl_Example t2
                      on
                         t1.StockCode = t2.StockCode and
                         t1.Type = t2.Type and
                         t1.ValidFrom < t2.ValidTo and
                         t2.ValidFrom < t1.ValidTo and
                         t1.ID <> t2.ID
            where
                t1.ID in (select ID from inserted))
    BEGIN
         RAISERROR ('Date range cant overlap existing date ranges for given StockCode and Type', 16, 1)
         ROLLBACK --We're in a trigger, we *must* be in a transaction
    END
    

    オーバーラップを検出するためのより単純な条件を使用します。両方の行が他の行が終了する前に開始する場合、オーバーラップが存在します。




    1. VestaCPをクリーンインストールします

    2. Oracle DB で日付範囲が再帰的に重複するレコードを検索する方法

    3. 暗黙のDEFAULT値を持つTIMESTAMPが非推奨であるため、Mysql 5.6サーバーを起動できませんエラー?

    4. 外部キー違反が原因でSQLexceptionがスローされたかどうかを確認するにはどうすればよいですか?