2016-10-26 40 views
0
create table students (
    tnum char(9) PRIMARY KEY CHECK (tnum SIMILAR TO 'T[:DIGIT:]{8}'), 
    ssn varchar(9) UNIQUE NOT NULL CHECK (ssn SIMILAR TO '[:DIGIT:]{9}'), 
    first_name varchar(20) NOT NULL, 
    credits numeric(3, 0) NOT NULL DEFAULT 0 
); 

为什么这不起作用?如果我删除“默认0”,它可以工作,但如果我离开“默认0”它不起作用。那么默认约束的正确语法是什么?Firebird默认约束的正确语法是什么?

+0

我可以解决问题了吗? – rbr94

回答

2

尝试改变你的语法顺序:

credits numeric(3, 0) DEFAULT 0 NOT NULL 

那么它应该是作为CREATE TABLE syntax定义:

CREATE [GLOBAL TEMPORARY] TABLE tablename 
    ... 
    (<col_def> [, {<col_def> | <tconstraint>} ...]) 
    ...; 

<col_def> ::= <regular_col_def> | <computed_col_def> 

<regular_col_def> ::= 
    colname {<datatype> | domainname} 
    [DEFAULT {literal | NULL | <context_var>}] 
    [NOT NULL] 
    [<col_constraint>] 
    [COLLATE collation_name] 

...