oracle语法

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 提醒。好好学习!