我正在尝试使用Oracle的"Create Table As Select"功能进行快速更新。我遇到的问题是"Null"字段没有被保留。
我定义了以下表格:
create table mytable(
accountname varchar2(40) not null,
username varchar2(40)
);
当我执行原始的CTAS时,account上的NOT NULL被保留:
create table ctamytable as select * from mytable;
describe ctamytable;
Name Null Type
----------- -------- ------------
ACCOUNTNAME NOT NULL VARCHAR2(40)
USERNAME VARCHAR2(40)
然而,当我对accountname进行替换时,NOT NULL限制并未保留。
create table ctamytable as
select replace(accountname, 'foo', 'foo2') accountname,
username
from mytable;
describe ctamytable;
Name Null Type
----------- ---- -------------
ACCOUNTNAME VARCHAR2(160)
USERNAME VARCHAR2(40)
注意到accountname
字段不再为空,而varchar2
字段从40个字符变为了160个字符。有人之前看到过吗?