sql >> Databasteknik >  >> RDS >> Oracle

Ändra tabell för att ändra kolumns standardvärde

Din tro på vad som kommer att hända är inte korrekt. Att ställa in ett standardvärde för en kolumn kommer inte att påverka befintliga data i tabellen.

Jag skapar en tabell med kolumnen col2 som inte har något standardvärde

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

Om jag sedan ändrar tabellen för att ställa in ett standardvärde kommer ingenting om de befintliga raderna att ändras

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

Även om jag senare ändrar standard igen, kommer det fortfarande inte att ske någon förändring av de befintliga raderna

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. Hur listar jag alla kolumner i en tabell?

  2. Barkers notation

  3. Ordlista över SQL Server-frågor — A Stick Shift för DBA:er

  4. Jag förstår inte Collation? (Mysql, RDBMS, teckenuppsättningar)