Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment mettre des valeurs par défaut pour chaque colonne du tableau ?

Nous ne pouvons pas faire cela. Nous devons taper toutes les colonnes et leurs fonctions NVL() individuelles. Je sais que cela semble demander beaucoup d'efforts, mais considérez ce qui se passerait si l'une de vos colonnes était une DATE ou un autre type de données "exotique".

Si vous avez beaucoup de colonnes et que vous voulez vraiment économiser des efforts, vous pouvez générer les clauses à partir du dictionnaire de données :

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

Coupez-collez le jeu de résultats dans un éditeur.

Une fois que vous avez commencé sur cette route, il est facile d'être plus sophistiqué :

 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;