Niềm tin của bạn về những gì sẽ xảy ra là không đúng. Đặt giá trị mặc định cho một cột sẽ không ảnh hưởng đến dữ liệu hiện có trong bảng.
Tôi tạo một bảng với một cột col2
không có giá trị mặc định
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
Sau đó, nếu tôi thay đổi bảng để đặt giá trị mặc định, thì không có gì về các hàng hiện có sẽ thay đổi
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
Ngay cả khi tôi thay đổi lại mặc định sau đó, vẫn sẽ không có thay đổi nào đối với các hàng hiện có
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