日期:2014-05-17  浏览次数:20706 次

oracle语法求助
各位大哥,oracle的default属性语法怎么写
我建表的时候
CREATE TABLE topic(
  id number(15) NOT NULL,  
  parentid number(16) NOT NULL default 0,
  forumid number(16) NOT NULL default 0,
  username varchar(20),
  title varchar(250),
  content varchar2(1000),
  postdate date ,
  replies number(16) NOT NULL default 0
);
老是在default报错:ORA-00907: 缺少右括号

------解决方案--------------------
SQL code

SQL> CREATE TABLE topic(
  2    id number(15) NOT NULL, 
  3    parentid number(16) default 0 NOT NULL ,
  4    forumid number(16) default 0 NOT NULL ,
  5    username varchar(20),
  6    title varchar(250),
  7    content varchar2(1000),
  8    postdate date ,
  9    replies number(16) default 0 NOT NULL 
 10  ); 

Table created.

SQL>

------解决方案--------------------
既然都有默认值了,那就没有必要not null了。

SQL code

CREATE TABLE topic( 
  id number(15) NOT NULL,  
  parentid number(16)  default 0, 
  forumid number(16)  default 0, 
  username varchar(20), 
  title varchar(250), 
  content varchar2(1000), 
  postdate date , 
  replies number(16)  default 0 
);

------解决方案--------------------
SQL code


/--not null和default 0是重复的。
 
CREATE TABLE topic( 
  id number(15) NOT NULL,  
  parentid number(16)  default 0, 
  forumid number(16)  default 0, 
  username varchar(20), 
  title varchar(250), 
  content varchar2(1000), 
  postdate date , 
  replies number(16)  default 0 
);

------解决方案--------------------
楼上大侠们, 默认值和非空约束是两回事吧?

SQL code

SQL> create table t10(
  2  id varchar2(10) default 'notset');

Table created.

SQL> insert into t10 values('aa');

1 row created.

SQL> insert into t10 values('bb');

1 row created.

SQL> commit;

Commit complete.

SQL> update t10 set id = null where id = 'aa';

1 row updated.

SQL> select * from t10;

ID
----------

bb

SQL> commit;

------解决方案--------------------
那就是1楼的正解,谢谢lpc19598188 提醒。好好学习!