sql自增id怎么写 并且设置成为主键?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql自增id怎么写 并且设置成为主键?相关的知识,希望对你有一定的参考价值。

主键可以有多个吗?

主键字段 int identity(11,1) primary key

这样就可以了。

主键只能有1个,可以是一个字段,也可以是多个字段组合的。
参考技术A 可以设组合主键,id自增,把id列设成identity就行

db2中插入数据后直接返回主键(自增列id)的sql怎么写

如题

参考技术A db2 => CREATE TABLE test_create_tab2 (
db2 (cont.) => id INT NOT NULL PRIMARY KEY generated always as identity,
db2 (cont.) => val VARCHAR(10)
db2 (cont.) => );
DB20000I SQL 命令成功完成。

db2 => INSERT INTO test_create_tab2(val) VALUES ('NO id');
DB20000I SQL 命令成功完成。

这里和 SQL Server 一样,大家都不能手动指定那个 自增id 的数值
db2 => INSERT INTO test_create_tab2(id, val) VALUES (1, 'id no use');
DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0798N 不能为定义为 GENERATED ALWAYS 的列 "ID" 指定值。 SQLSTATE=428C9

这里和 SQL Server 不一样,SQL Server 会自动排除掉那个自动递增的列
db2 => INSERT INTO test_create_tab2 VALUES ('Is Auto ?');
DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0117N 赋值数目与指定的或隐含的列数或变量数不一样。 SQLSTATE=42802

关于 初始数值的设定。
db2 => drop TABLE test_create_tab2;
DB20000I SQL 命令成功完成。

db2 => CREATE TABLE test_create_tab2 (
db2 (cont.) => id INT NOT NULL PRIMARY KEY generated always as identity
db2 (cont.) => (Start With 100
db2 (cont.) => Increment by 1
db2 (cont.) => minvalue 100
db2 (cont.) => maxvalue 999999999
db2 (cont.) => no cycle cache 5 no order),
db2 (cont.) => val VARCHAR(10)
db2 (cont.) => );
DB20000I SQL 命令成功完成。

db2 => INSERT INTO test_create_tab2(val) VALUES ('NO id');
DB20000I SQL 命令成功完成。

db2 => select * from test_create_tab2;

ID VAL
----------- ----------
100 NO id

1 条记录已选择。

db2 => select identity_val_local() from SYSIBM.SYSDUMMY1;

1
---------------------------------
100.

1 条记录已选择。
参考技术B INSERT INTO jobs (job_desc,min_lvl,max_lvl)
VALUES ('Accountant',12,125)

--返回自增列
SELECT @@IDENTITY AS 'Identity'

以上是关于sql自增id怎么写 并且设置成为主键?的主要内容,如果未能解决你的问题,请参考以下文章

sql server建表时怎么设置ID字段自增

oracle怎么实现id自增和设置主键啊

sql server建表时怎么设置ID字段自增

sql server建表时怎么设置ID字段自增

mysql 批量插入 获取所有自增ID

sql 设置主键 自动增长