你可以看看这里,大致有三种办法:
#方法一是使用last_insert_idSELECT LAST_INSERT_ID()
#方法二是使用max(id),但是不适用高并发环境下。
方法三是创建一个存储过程,在存储过程中调用先插入再获取最大值的 *** 作
#方法四使用@@identity
select @@IDENTITY
#基本MySQL的学习,可以学习这里。使用MariaDB数据库管理系统。 linuxprobe.com/chapter-18.html
#出处:
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
条记录已选择。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)