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

¿Cómo poner valores predeterminados para cada columna en la tabla?

No podemos hacer eso. Necesitamos escribir todas las columnas y sus funciones NVL() individuales. Sé que parece mucho esfuerzo, pero considere lo que sucedería si alguna de sus columnas es una FECHA o algún otro tipo de datos "exótico".

Si tiene muchas columnas y realmente desea ahorrar esfuerzo, puede generar las cláusulas del diccionario de datos:

 select 'nvl('|| column_name || ', 0)' 
 from user_tab_columns
 where table_name = 'STUDENT'
 order by column_id;

Corta y pega el conjunto de resultados en un editor.

Una vez que comienzas en esta ruta, es fácil volverse más sofisticado:

 select case when column_id > 1 then ',' end ||
       'nvl('|| column_name || ',' ||
       case when data_type = 'DATE' then 'sysdate'
            when  data_type = 'VARCHAR2' then '''DEF''' 
            else '0' end ||
       ')' 
 from user_tab_columns
 where table_name = 'STUDENT'
 order by column_id;