Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle:specificando il valore predefinito per la colonna del tipo di oggetto

Sembra che non sia possibile.

Una soluzione alternativa sarebbe utilizzare un trigger:

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;
/

A proposito, non ignora completamente i costruttori non predefiniti, sovrascrivendo il costruttore predefinito

CONSTRUCTOR FUNCTION test_t(in_val NUMBER)
RETURN SELF AS RESULT

porta a un'eccezione quando si tenta di definire la tabella con DEFAULT NEW test_t(1) :