Ansi SQL:自动编号列

Man*_*ngo 4 auto-increment sql-standard

是否有自动编号列的ANSI标准。

目前,我们有一个选择SERIALAUTOINCREMENTAUTO_INCREMENTIDENTITY()和良好的老NEXTVAL()等等。

我在某处读到有一个新标准IDENTITY,我知道 Oracle 最近实施了该标准。我知道 Oracle 并不是标准的硬道理。

如果有一个标准,那么它是一个很长的时间来。

a_h*_*ame 6

是的,它绝对不是“新标准”。自 SQL:2003 以来,它一直在 SQL 标准中

定义是:

<identity column specification> ::=
  GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY
    [ <left paren> <common sequence generator options> <right paren> ]
Run Code Online (Sandbox Code Playgroud)

带有序列生成器选项的可选部分允许您定义底层序列(=生成器)的特征,您可以执行以下操作:

id integer GENERATED ALWAYS AS IDENTITY (start with 42 increment by 10 cycle)
Run Code Online (Sandbox Code Playgroud)

PostgreSQL 10、Oracle 12.1、DB2、Apache Derby、HSQLDB、Firebird 和 NuoDB 支持(至少)这种语法。