DB2 和SQL Server自增列比较

最近由于对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用自增列的定义产生值。




请使用浏览器的分享功能分享到微信等