DB2和MYSQL表查询自增_DB2 和SQL Server自增列比较

本文通过实例对比了DB2和SQL Server在处理自增列时的不同行为。在SQL Server中,自增列的值取决于表内最大值,而DB2则会无视手动插入的值,按自增定义生成新值。
摘要由CSDN通过智能技术生成

最近由于对SQL Server的自增列理解不够好,导致了一个设计问题,做了2个小例子解释一下

SQL Server的自增列

create table identitytest(

id int identity(1,1),

name varchar(20)

)

go

set IDENTITY_INSERT identitytest ON

go

insert into identitytest(id,name)values(1,'test1')

go

insert into identitytest(id,name)values(2,'test2')

go

set IDENTITY_INSERT identitytest OFF

go

insert into identitytest(name)values('test3')

go

set IDENTITY_INSERT identitytest ON

go

insert into identitytest(id,name)values(10000,'test4')

go

set IDENTITY_INSERT identitytest OFF

go

insert into identitytest(name)values('test5')

go

id      name

1       test1

2       test2

3       test3

10000   test4

10001   test5

(5 rows affected)

1>

SQL Server的自增列的值取决于表里面的此列的当前的最大值。

create table identitytest(

id bigint not null generated by default as identity (start with 1,increment by 1),

name varchar(20)

);

insert into identitytest(id,name)values(1,'test1');

insert into identitytest(id,name)values(2,'test2');

insert into identitytest(name)values('test3');

insert into identitytest(id,name)values(10000,'test4');

insert into identitytest(name)values('test5');

db2 => select * from identitytest;

ID                   NAME

-------------------- --------------------

1 test1

2 test2

1 test3

10000 test4

2 test5

5 record(s) selected.

db2 =>

DB2的自增列,当你手工插入自增列的值的时候,DB2会无视你插入的值,DB2用自增列的定义产生值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值