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

Hvordan sætter man standardværdier for hver kolonne i tabellen?

Det kan vi ikke. Vi skal skrive alle kolonnerne og deres individuelle NVL()-funktioner. Jeg ved, at det virker som en stor indsats, men overvej, hvad der ville ske, hvis nogen af ​​dine kolonner er en DATE eller en anden "eksotisk" datatype.

Hvis du har mange kolonner, og du virkelig vil spare kræfter, kan du generere klausulerne fra dataordbogen:

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

Klip og indsæt resultatsættet i en editor.

Når du først starter på denne rute, er det nemt at blive mere sofistikeret:

 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;


  1. hvordan man får indlæsningstid i millisekunder eller mikrosekunder i mysql

  2. MySQL DROP VIEW

  3. SQL tidsforskel inden for enkelt tabel

  4. PHP PDO udarbejdede erklæringer