Firebird默认约束的正确语法是什么?

时间:2016-10-26 20:20:32

标签: sql default firebird

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"在它没有工作。那么默认约束的正确语法是什么?

1 个答案:

答案 0 :(得分: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]

...