Sql Alter table可修改列的默认值

Sql Alter table可修改列的默认值,sql,oracle,alter-table,Sql,Oracle,Alter Table,我有一个要求,我们需要修改数据库表中列的默认值。该表已经是数据库中的现有表,当前列的默认值为NULL。 现在,如果向该列添加一个新的默认值,如果我是正确的,它会将该列的所有现有空值更新为新的默认值。有没有办法不这样做,但仍然在列上设置一个新的默认值。 我的意思是我不希望现有的空值被更新,而是希望它们保持为空值 在此方面的任何帮助都将不胜感激。 谢谢你对将要发生的事情的看法是不正确的。为列设置默认值不会影响表中的现有数据 我创建了一个表,其列col2没有默认值 SQL> create tab

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

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

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

我创建了一个表,其列
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
例如:

ALTER TABLE RESULT
ALTER COLUMN STATUS SET DEFAULT 'FAIL'

按照Justin的示例,下面的命令在Postgres中有效:


alter table foo alter col2列设置默认“bar”

对于Sql Azure,以下查询有效:

ALTER TABLE [TableName] ADD  DEFAULT 'DefaultValue' FOR ColumnName
GO
altertable修改默认值
例如:ALTER TABLE AAA MODIFY ID DEFAULT AAA_SEQUENCE.nextval
在Oracle Database 12c Enterprise Edition 12.2.0.1.0版上测试* 修改*列名称*默认*值*;
在甲骨文工作

e、 g:

ALTER TABLE MY_TABLE
修改我的_列默认值1;

您列的数据类型是什么?很好的示例。作为一个简单的快捷方式,仅添加默认值时不需要数据类型。您只需执行
alter table foo modify(col2默认的“bar”)
@rimsky Neat快捷方式,但似乎有其他建议。也许文件有误导性。它还提到了您从MySQL文档中引用的
ALTER[COLUMN]colu name{SET DEFAULT literal | DROP DEFAULT}
@trss,但问题被标记为
oracle
对不起,我的错了。没有注意到那些小标签。如果问题也提到Oracle,这会很有帮助。出于某种原因,这会引发ORA-01735错误:Alter Table MGRA.TAB1 Alter COLUMN ID_PRO SET DEFAULT 1;我认为这是T-SQL(MS SQL),而不是Oracle。
ALTER TABLE [TableName] ADD  DEFAULT 'DefaultValue' FOR ColumnName
GO
ALTER TABLE <table_name> MODIFY <column_name> DEFAULT <defult_value>

EX: ALTER TABLE AAA MODIFY ID DEFAULT AAA_SEQUENCE.nextval