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

Zmień tabelę, aby zmienić domyślną wartość kolumny

Twoje przekonanie o tym, co się stanie, nie jest poprawne. Ustawienie wartości domyślnej dla kolumny nie wpłynie na istniejące dane w tabeli.

Tworzę tabelę z kolumną col2 który nie ma wartości domyślnej

SQL> create table foo(
  2    col1 number primary key,
  3    col2 varchar2(10)
  4  );

Table created.

SQL> insert into foo( col1 ) values (1);

1 row created.

SQL> insert into foo( col1 ) values (2);

1 row created.

SQL> insert into foo( col1 ) values (3);

1 row created.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3

Jeśli następnie zmienię tabelę, aby ustawić wartość domyślną, nic w istniejących wierszach się nie zmieni

SQL> alter table foo
  2    modify( col2 varchar2(10) default 'foo' );

Table altered.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3

SQL> insert into foo( col1 ) values (4);

1 row created.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3
         4 foo

Nawet jeśli później ponownie zmienię ustawienie domyślne, nadal nie będzie zmian w istniejących wierszach

SQL> alter table foo
  2    modify( col2 varchar2(10) default 'bar' );

Table altered.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3
         4 foo

SQL> insert into foo( col1 ) values (5);

1 row created.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3
         4 foo
         5 bar


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. funkcja listunagg?

  2. Pobierz VIEW ddl za pomocą zapytania

  3. Generuj dane testowe za pomocą programisty Oracle PL/SQL

  4. sposoby na uniknięcie globalnych tabel tymczasowych w Oracle

  5. Oracle:wydajność zbierania zbiorczego