2017-05-07 7 views
1

SQL Server 2014問題。 DATEデータ型を持つ2つのDATEカラムを持つテーブルを作成しました。 1つは、他のものが将来のイベントであると仮定されます。私は日付1 <日付2の制約を作成しました。将来的にNULLをdate2に入れるテーブルに挿入しました。私はテーブルの何かを更新することはできません。 Date2をdateで更新しようとすると、Operand型のclashが返されます。intはdateと互換性がありません。私は考えることができる方法でアポストロフィーの有無にかかわらず日付を入力しようとしました。私は追加した制約のために列を削除または変更できません。助けて。修正するために必要なSQL構文や修正のために更新するSQL構文について具体的に記述してください。日付にNULLを挿入して、今更新できません。

+0

使用した文を共有できますか? – Mureinik

答えて

0

制約を変更してください! falseまたはNULLのいずれかです。 、あなたが制約をドロップするには

alter table t add constraint chk_t_date1_date2 check ((date1 < date2) or date2 is null); 

alter table t drop constraint <constraint name>; 

をあなたがinformation_schema.table_constraintsから取得することができ、制約の名前を知っている必要がありますので、あなたが持っている制約を削除して、同じような何かを。

+0

制約を正常に削除しました。 OR IS NULLを付けて新しいものを追加しました。私はまだその列を更新することはできません。同じ非互換性。私は制約なしでそれを試して、文字列または日付としてフィールドを更新することはできません。私の構文は次のとおりです。PETの設定を更新しました。DeceasedDate = 2017-04-02 WHERE PetID = 3 –

+0

この問題は、日付フィールド自体を実行していないトリガーが原因だと思います。みんな、ありがとう! –

+0

@KathleenSheehan。 。 。問題はトリガーと制約の両方でした。もちろん、挿入が挿入されるまでトリガは起動しません。 –

0

「前後」には「2019-04-18」を使用する必要があります。

+0

アドバイスと同じくらいうれしく、OPにはdate2にNULL値があると書かれています。 SQL Serverでは、値が空ではなく不明な値として扱われます。それは正しく評価されません。 –

関連する問題