2016-10-26 68 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] 

...