Этого можно добиться, если немного обмануть, например:
CREATE OR REPLACE FUNCTION SYSDATE_DETERMINISTIC RETURN DATE DETERMINISTIC IS
BEGIN
RETURN SYSDATE;
END SYSDATE_DETERMINISTIC;
/
CREATE TABLE Table1 (
s_date DATE,
C_DATE DATE GENERATED ALWAYS AS ( SYSDATE_DETERMINISTIC() )
);
ALTER TABLE Table1 ADD CONSTRAINT s_check CHECK ( s_date < C_DATE );
Конечно, функция SYSDATE_DETERMINISTIC
является , а не детерминированной, но Oracle в любом случае позволяет объявить это.
Возможно, в будущих выпусках Oracle станет более умным и не допустит подобных уловок.