rav*_*avi 26 sql oracle alter-table
我有一个要求,我们需要在数据库表中修改列的默认值.该表已经是数据库中的现有表,当前该列的默认值为NULL.现在,如果向此列添加新的默认值,如果我是正确的,它会将列的所有现有NULL更新为新的DEfault值.有没有办法不这样做,但仍然在列上设置一个新的默认值.我的意思是我不希望更新现有的NULL并希望它们保持为NULL.
对此有任何帮助表示赞赏.谢谢
Jus*_*ave 55
你对将要发生的事情的看法是不正确的.为列设置默认值不会影响表中的现有数据.
我创建一个表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
Run Code Online (Sandbox Code Playgroud)
如果我然后更改表以设置默认值,则现有行的任何内容都不会更改
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
Run Code Online (Sandbox Code Playgroud)
即使我随后再次更改默认值,仍然不会更改现有行
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
Run Code Online (Sandbox Code Playgroud)
小智 6
ALTER TABLE *table_name*
MODIFY *column_name* DEFAULT *value*;
Run Code Online (Sandbox Code Playgroud)
在甲骨文工作
例如:
ALTER TABLE MY_TABLE
MODIFY MY_COLUMN DEFAULT 1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146586 次 |
| 最近记录: |