別のテーブルの推定時間に加えられた変更を記録するテーブルを作成しようとしています。データベース全体は、企業が従業員に作業を割り当て、顧客に請求書を作成するためのプロジェクト管理システムです。日付が未来でないことを確認するための制約をチェックしますか?
は現在、私は持っている:CHANGE_DATEは将来の日付でなければなりません
CREATE TABLE task_history
(
task_history_id NUMBER(5),
previous_est_hours NUMBER(3,1),
change_date DATE,
reason_for_change VARCHAR2(50),
task_id NUMBER(5),
CONSTRAINT TASKHIST_TASKHISTID_PK PRIMARY KEY (task_history_id),
CONSTRAINT TASKHIST_TASKID_FK FOREIGN KEY (task_id) REFERENCES task(task_id),
CONSTRAINT TASKHIST_TASKID_NN CHECK (task_id IS NOT NULL),
CONSTRAINT TASKHIST_CHANGEDATE_NONFUTURE CHECK (change_date <= sysdate)
);
、それが今日または過去のいずれかでなければなりません。 最後のチェック制約が問題です。私が理解しているように、あなたが忘れてしまった理由のためにsysdateを使うことはできませんが、できません。私はGETDATE()と私がオンラインで見つけたすべての変種も試しました。 これはおそらく単純な作業ですか?
'GETDATE()'はTSQL固有のものです。 'SYSDATE'は現在の日時を取得するためのPLSQL固有の手段であり、' CURRENT_TIMESTAMP'はANSIの代替手段です(データベースの大半がサポートしています)。実際にエラーが発生していますか?これはSYSDATEを使用しないことについて私が聞いた最初のものなので、もっと聞きたいです。ご使用のOracleのバージョンも役立ちます。 –