जो होगा उसके बारे में आपका विश्वास सही नहीं है। किसी कॉलम के लिए डिफ़ॉल्ट मान सेट करने से तालिका में मौजूदा डेटा प्रभावित नहीं होगा।
मैं एक कॉलम col2
. के साथ एक टेबल बनाता हूं जिसका कोई डिफ़ॉल्ट मान नहीं है
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
यदि मैं डिफ़ॉल्ट मान सेट करने के लिए तालिका में परिवर्तन करता हूं, तो मौजूदा पंक्तियों के बारे में कुछ भी नहीं बदलेगा
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
भले ही मैं बाद में डिफ़ॉल्ट को फिर से बदल दूं, फिर भी मौजूदा पंक्तियों में कोई बदलाव नहीं होगा
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