Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak umieścić wartości domyślne dla każdej kolumny w tabeli?

Nie możemy tego zrobić. Musimy wpisać wszystkie kolumny i ich indywidualne funkcje NVL(). Wiem, że wydaje się to być dużym wysiłkiem, ale zastanów się, co by się stało, gdyby któraś z Twoich kolumn była typu DATA lub innym „egzotycznym” typem danych.

Jeśli masz dużo kolumn i naprawdę chcesz zaoszczędzić wysiłek, możesz wygenerować klauzule ze słownika danych:

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

Wytnij i wklej zestaw wyników do edytora.

Gdy zaczniesz na tej trasie, łatwo jest uzyskać bardziej wyrafinowaną:

 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy istnieje jakaś funkcja w Oracle podobna do group_concat w mysql?

  2. Zbieranie zbiorcze i natychmiastowe wykonywanie w Oracle

  3. Oracle PLSQL odpowiednik ASCISTR(N'str')

  4. Autoryzacja uprawnień Oracle SQL dla wielu atrybutów i tabel za pomocą jednej instrukcji

  5. Jak określić typ bazy danych dla danego połączenia JDBC?