几天前有人问我设置了字段的默认值为什么无效呢?查找了一些资料,做了一个总结:
createtableTEST
(
IDVARCHAR2(64),
AVARCHAR2(3)default'0',
NAMEVARCHAR2(100)
);
SQL>insertintotest(a,name)values(null,'test');
1rowinserted
SQL>select*fromtest;
ANAME
-----------------------------------------------------------------------------------
test
在上面的例子中,虽然A列设置了默认值为0,但插入空仍然无效。
其实对于默认值,Oracle支持两种方式:
Default关键字
不指定列
先看第一种方式,
SQL>insertintotest(a,name)values(default,'test');
1rowinserted
SQL>select*fromtest;
ANAME
-----------------------------------------------------------------------------------
0test
列A终于有了默认值0。
再看第二种方式,
SQL>insertintotest2(name)values('test');
1rowinserted
SQL>select*fromtest2;
ANAME
-----------------------------------------------------------------------------------
0test