Oracle 创建表语法(非空且默认)

问题描述 投票:0回答:1

我不明白为什么 Oracle 接受

CREATE TABLE t1 (id NUMBER DEFAULT 1 NOT NULL)

但不是

CREATE TABLE t1 (id NUMBER NOT NULL DEFAULT 1)

根据我的理解,组件 NOT NULL、DEFAULT、UNIQUE、PRIMARY KEY.. 不必采用特殊顺序,还是我错了?

oracle syntax
1个回答
0
投票

你理解错了。

列定义(来自CREATE TABLE)表示DEFAULT先行,然后是内联约束(NOT NULL):

column [ datatype [ COLLATE column_collation_name ] ]
  [ SORT ] [ VISIBLE | INVISIBLE ]
  [ DEFAULT [ ON NULL ] expr | identity_clause ]      --> DEFAULT goes before ...
  [ ENCRYPT encryption_spec ]
  [ { inline_constraint }...                          --> ... incline constraint
  | inline_ref_constraint
  ]
© www.soinside.com 2019 - 2024. All rights reserved.