sql >> Database >  >> RDS >> Oracle

Tabel wijzigen om de standaardwaarde van de kolom te wijzigen

Uw overtuiging over wat er zal gebeuren is niet correct. Het instellen van een standaardwaarde voor een kolom heeft geen invloed op de bestaande gegevens in de tabel.

Ik maak een tabel met een kolom col2 die geen standaardwaarde heeft

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

Als ik de tabel vervolgens wijzig om een ​​standaardwaarde in te stellen, verandert er niets aan de bestaande rijen

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

Zelfs als ik vervolgens de standaard opnieuw verander, zal er nog steeds geen verandering zijn in de bestaande rijen

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. Reverse engineer (oracle) schema naar ERD

  2. MySQL-opdrachten:spiekbriefje met veelvoorkomende MySQL-query's

  3. Hoe kan ik mysqli_fetch_array() twee keer gebruiken?

  4. RDBMS en NoSQL overbruggen:inleiding tot 2DX UI-cluster