0
alter table dbo.transactions
add constraint tk_paiement check ([Date_paiementdu]=[dateTransaction] +(30))

date_paiementdudatetransaction の 30 日後に設定したいのですが、うまくいきません

助けが要る!ありがとう

4

3 に答える 3

2

CHECK制約を定義しましたが、必要なのは計算列です。

alter table dbo.transactions 
add tk_Date_paiementdu as (DateAdd(day, 30, [dateTransaction])
于 2013-02-19T00:00:53.880 に答える
2

チェック制約ではなく計算列が必要なようです。

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 を使用すると、列に表示されるデータが実際に格納されます。これを省略すると、必要になるたびに計算される仮想列として列が保持されます。

于 2013-02-19T00:01:27.227 に答える
0

データベースの正規化の原則の 1 つは、計算された値を保存しないことです。それを念頭に置いて、おそらく次のような方法で目標を達成できます。

where datediff(day, dateTransaction, Date_paiementdu) <= 30

これを達成する方法の詳細は RDBMS 固有のものであり、指定していません。

于 2013-02-19T00:40:00.327 に答える