3 回答

TA貢獻2016條經(jīng)驗 獲得超9個贊
您不能在檢查約束中使用SYSDATE。根據(jù)文件
檢查約束條件不能包含以下結(jié)構(gòu):
子查詢和標量子查詢表達式
調(diào)用不確定的函數(shù)(CURRENT_DATE,
CURRENT_TIMESTAMP,DBTIMEZONE,
LOCALTIMESTAMP,SESSIONTIMEZONE,
SYSDATE,SYSTIMESTAMP,UID,USER和USERENV)調(diào)用用戶定義的函數(shù)
取消引用REF列(例如,使用DEREF函數(shù))
嵌套表列或?qū)傩?/p>
偽列CURRVAL,NEXTVAL,LEVEL或ROWNUM
未完全指定的日期常量
對于10g第2版(10.2),請參閱約束,對于11g第2版(11.2),請參閱約束。
請記住,完整性約束是關(guān)于表數(shù)據(jù)的聲明,它始終為 true。
無論如何:我不確切地知道你想要實現(xiàn)什么,但我認為你可以使用觸發(fā)器來達到這個目的。

TA貢獻1772條經(jīng)驗 獲得超5個贊
將sysdate寫入列并將其用于驗證。此列可能是您的審核列(例如:創(chuàng)建日期)
CREATE TABLE "AB_EMPLOYEE22"
(
"NAME" VARCHAR2 ( 20 BYTE ),
"AGE" NUMBER,
"SALARY" NUMBER,
"DOB" DATE,
"DOJ" DATE DEFAULT SYSDATE
);
Table Created
ALTER TABLE "AB_EMPLOYEE22" ADD CONSTRAINT
AGE_CHECK CHECK((ROUND((DOJ-DOB)/365)) = AGE) ENABLE;
Table Altered
- 3 回答
- 0 關(guān)注
- 1035 瀏覽
添加回答
舉報