我有一个需求,我们需要修改数据库表中列的默认值。该表已经是数据库中的现有表,当前该列的默认值为NULL。现在,如果向这个列添加一个新的默认值,如果我是正确的,它会将该列的所有现有NULL更新为新的default值。是否有一种方法可以不这样做,但仍然在列上设置一个新的默认值。我的意思是,我不希望现有的NULL被更新,并希望它们保持为NULL。
在这方面的任何帮助都将不胜感激。谢谢
发布于 2014-01-11 02:45:22
你对将要发生的事情的看法是不正确的。设置列的默认值不会影响表中的现有数据。
我创建一个没有默认值的列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发布于 2020-08-14 03:09:13
ALTER TABLE *table_name*
MODIFY *column_name* DEFAULT *value*;在甲骨文工作
例如:
ALTER TABLE MY_TABLE
MODIFY MY_COLUMN DEFAULT 1;发布于 2016-03-01 05:37:07
ALTER TABLE {TABLE NAME}
ALTER COLUMN {COLUMN NAME} SET DEFAULT '{DEFAULT VALUES}'例子:
ALTER TABLE RESULT
ALTER COLUMN STATUS SET DEFAULT 'FAIL'https://stackoverflow.com/questions/21057275
复制相似问题