Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle:Festlegen des Standardwerts für die Objekttypspalte

Anscheinend ist dies nicht möglich.

Eine Problemumgehung wäre die Verwendung eines Triggers:

CREATE OR REPLACE TRIGGER test_trigger
  BEFORE INSERT OR UPDATE
ON test_table
  FOR EACH ROW
WHEN ( new.test_attr IS NULL )
BEGIN
  :new.test_attr := NEW test_t();
END test_trigger;
/

Es ignoriert übrigens Nicht-Standardkonstruktoren nicht vollständig und überschreibt den Standardkonstruktor

CONSTRUCTOR FUNCTION test_t(in_val NUMBER)
RETURN SELF AS RESULT

führt zu einer Ausnahme beim Versuch, die Tabelle mit DEFAULT NEW test_t(1) zu definieren :