2016-10-26 6 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 
); 

なぜこれが機能しないのですか? "default 0"を削除すると動作しますが、 "default 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] 

... 
関連する問題