首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alter修改列的默认值

Alter修改列的默认值
EN

Stack Overflow用户
提问于 2014-01-11 01:11:29
回答 6查看 231.5K关注 0票数 39

我有一个需求,我们需要修改数据库表中列的默认值。该表已经是数据库中的现有表,当前该列的默认值为NULL。现在,如果向这个列添加一个新的默认值,如果我是正确的,它会将该列的所有现有NULL更新为新的default值。是否有一种方法可以不这样做,但仍然在列上设置一个新的默认值。我的意思是,我不希望现有的NULL被更新,并希望它们保持为NULL。

在这方面的任何帮助都将不胜感激。谢谢

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-01-11 02:45:22

你对将要发生的事情的看法是不正确的。设置列的默认值不会影响表中的现有数据。

我创建一个没有默认值的列col2的表。

代码语言:javascript
复制
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

如果然后更改表以设置默认值,则现有行的任何内容都不会更改。

代码语言:javascript
复制
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

即使我随后再次更改默认值,也不会更改现有行。

代码语言:javascript
复制
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
票数 66
EN

Stack Overflow用户

发布于 2020-08-14 03:09:13

代码语言:javascript
复制
ALTER TABLE *table_name*
MODIFY *column_name* DEFAULT *value*;

在甲骨文工作

例如:

代码语言:javascript
复制
ALTER TABLE MY_TABLE
MODIFY MY_COLUMN DEFAULT 1;
票数 9
EN

Stack Overflow用户

发布于 2016-03-01 05:37:07

代码语言:javascript
复制
ALTER TABLE {TABLE NAME}
ALTER COLUMN {COLUMN NAME} SET DEFAULT '{DEFAULT VALUES}'

例子:

代码语言:javascript
复制
ALTER TABLE RESULT
ALTER COLUMN STATUS SET DEFAULT 'FAIL'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21057275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档