向oracle中的现有表添加具有缺省值的列

q5lcpyga  于 2022-12-22  发布在  Oracle
关注(0)|答案(4)|浏览(428)

我创建了一个名为- books的表,其中有一列的标题为'color'。最初,我在列'color'中有空值。现在,当我运行以下查询时:

alter table books modify color default 'blue';

模式已形成,但在从书籍中执行select * 时,列颜色中的所有值仍然为空。要触发的正确查询是什么?
以下是链接:http://sqlfiddle.com/#!4/f4210/1

w46czmvw

w46czmvw1#

当然。Alter table只改变了表的结构而不改变内容。新条目将得到默认值。
要更新现有值,请运行如下所示的sql-update查询:
更新书籍设置color ='blue',其中colore为空;

bsxbgnwa

bsxbgnwa2#

如果您现在插入到表中,则只会带有默认值。此语句不知道此表以前的内容。在非技术语言中,您是在告诉oracle现在就这样做。此语句不会检查旧值。

z9zf31ra

z9zf31ra3#

alter适用于要插入的下一个值:尝试插入行而不指定列color的值,值应为蓝色。
但这对现有值不起作用,您只需要更新这些值:

update books set color = 'blue';
fzwojiic

fzwojiic4#

hi此查询将用于在oracle的现有表中添加具有默认值的列。

alter table <table_name> add <column_name> <contraint> default <default_value> not null;

示例:

alter table books add record_status number(1,0) default 1 not null;

alter table books add color varchar(20) default 'blue' not null;

相关问题