alter table dbo.transactions
add constraint tk_paiement check ([Date_paiementdu]=[dateTransaction] +(30))
date_paiementdu
datetransaction の 30 日後に設定したいのですが、うまくいきません
助けが要る!ありがとう
alter table dbo.transactions
add constraint tk_paiement check ([Date_paiementdu]=[dateTransaction] +(30))
date_paiementdu
datetransaction の 30 日後に設定したいのですが、うまくいきません
助けが要る!ありがとう
CHECK制約を定義しましたが、必要なのは計算列です。
alter table dbo.transactions
add tk_Date_paiementdu as (DateAdd(day, 30, [dateTransaction])
チェック制約ではなく計算列が必要なようです。
ALTER TABLE yourTable
ADD Date_paiementdu AS DATEADD(DAY, 30, dateTransaction);
列を null 許容またはインデックス付けしないようにする場合は、使用する必要がPERSISTED
あり、DateTransaction も null 許容ではない必要があります。
ALTER TABLE yourTable
ADD Date_paiementdu AS DATEADD(DAY, 30, dateTransaction) PERSISTED NOT NULL;
さらに明確にするために、PERSISTED を使用すると、列に表示されるデータが実際に格納されます。これを省略すると、必要になるたびに計算される仮想列として列が保持されます。
データベースの正規化の原則の 1 つは、計算された値を保存しないことです。それを念頭に置いて、おそらく次のような方法で目標を達成できます。
where datediff(day, dateTransaction, Date_paiementdu) <= 30
これを達成する方法の詳細は RDBMS 固有のものであり、指定していません。