我需要在SQL中使用和Identity字段创建一个表。我已经能够通过我在本网站上阅读的其他问题解决这个问题。但是我需要改变我所发现的东西。
以下创建了文件,当我添加记录时,字段EMPNO中的值从1开始。我需要字段值从500010000000开始,如果每个新记录的可用增量为15。
CREATE TABLE r247585lib/cooltable
(EMPNO INTEGER GENERATED ALWAYS AS IDENTITY,
NAME CHAR(30),
SALARY DECIMAL(5,2),
DEPT SMALLINT)
最后一个并发症。我在AS400上这样做。有没有人有任何想法?
那是提前的。
答案 0 :(得分:3)
使用START WITH
和INCREMENT BY
身份选项:
CREATE TABLE r247585lib/cooltable
(EMPNO BIGINT GENERATED ALWAYS AS IDENTITY
(START WITH 500010000000, INCREMENT BY 15),
NAME CHAR(30),
SALARY DECIMAL(5,2),
DEPT SMALLINT)
EMPNO
需要声明为BIGINT
,因为示例起始值不适合32位整数数据类型。
| TYPE | MIN | MAX |
|---------+----------------------------+----------------------------|
| INTEGER | -2 147 483 648 | +2 147 483 647 |
| BIGINT | -9 223 372 036 854 775 808 | +9 223 372 036 854 775 807 |
供参考,可用的身份选项和用法是:
|--AS IDENTITY--+------------------------------------------------------+--|
| .--------------------------------------------. |
| V .-1----------------. (1) | |
'-(----+-START WITH--+-numeric-constant-+---+-----+--)-'
| .-1----------------. |
+-INCREMENT BY--+-numeric-constant-+-+
| .-NO MINVALUE----------------. |
+-+-MINVALUE--numeric-constant-+-----+
| .-NO MAXVALUE----------------. |
+-+-MAXVALUE--numeric-constant-+-----+
| .-NO CYCLE-. |
+-+-CYCLE----+-----------------------+
| .-CACHE--20------. |
+-+-NO CACHE-------+-----------------+
| '-CACHE--integer-' |
| .-NO ORDER-. |
'-+-ORDER----+-----------------------'
有关详细信息,请参阅CREATE TABLE上的文档。
我建议使用GENERATED BY DEFAULT
,以便您可以根据需要使用预先指定的身份密钥插入现有数据。