重複の可能性:
チェック制約での日付の使用、Oracle
Oracleでチェック制約を作成するためにこのクエリを使用する
alter table "ADVERTISEMENT" add constraint "ADVERTISEMENT_DATE" check ( "AD_DATE" ad_date>=sysdate) /
しかし、エラーが発生しましたORA-00920: invalid relational operator
重複の可能性:
チェック制約での日付の使用、Oracle
Oracleでチェック制約を作成するためにこのクエリを使用する
alter table "ADVERTISEMENT" add constraint "ADVERTISEMENT_DATE" check ( "AD_DATE" ad_date>=sysdate) /
しかし、エラーが発生しましたORA-00920: invalid relational operator
チェック制約は、常に真でなければならないデータに関するアサーションです。したがって、現在の日付を使用してチェック制約を強制しようとしても、まったく意味がありません。もし今日が真なら、明日は偽でなければならないからです。
これにはさまざまな方法がありますが、どれも完全に満足できるものではありません。
INSERT 文を発行する PL/SQL API を提供できます。これにより、列に常に SYSDATE が移入されるように制御できるからです。誰もが PL/SQL API を好むわけではありません。
その列のデフォルトとして SYSDATE を使用して表を定義できます。次に、テーブルに対するアクセス許可を使用して、他のユーザーが列にデータを入力できないようにします。これは、テーブルの所有者以外のユーザーに対してのみ機能します。
挿入トリガーと更新トリガーを使用して、ユーザーが割り当てた値を SYSDATE でオーバーライドできます。ただし、トリガーはパフォーマンスに影響を与えます。