sql >> Base de Datos >  >> RDS >> Oracle

Oracle:especificando el valor predeterminado para la columna de tipo de objeto

Parece que esto no es posible.

Una solución alternativa sería usar un disparador:

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

Por cierto, no ignora completamente los constructores no predeterminados, anulando el constructor predeterminado

CONSTRUCTOR FUNCTION test_t(in_val NUMBER)
RETURN SELF AS RESULT

conduce a una excepción al intentar definir la tabla con DEFAULT NEW test_t(1) :