Oracle数据库采用那种主键生成策略
1、自动增长identity:
适用于MySQL、DB2、MS SQL Server,采用数据库生成的主键,用于为long、short、int类型生成唯一标识
使用SQL Server 和 MySQL 的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server 中很常用)
数据库中的语法如下:
view plaincopy to clipboardprint?
01.MySQL:create tablet_user(id int auto_increment primary key, name varchar(20));
02.SQL Server:create tablet_user(id int identity(1,1) primary key, name varchar(20));
03.
04.<id name="id"column="id" type="long">
05. <generator class="identity" />
06.</id>
MySQL:create tablet_user(id int auto_increment primary key, name varchar(20));
SQL Server:create tablet_user(id int identity(1,1) primary key, name varchar(20));
<id name="id"column="id" type="long">
<generator class="identity" />
</id>
2、sequence:
DB2、Oracle均支持的序列,用于为long、short或int生成唯一标识
数据库中的语法如下:
view plaincopy to clipboardprint?
01.Oracle:create sequenceseq_name increment by 1 start with 1;
Oracle:create sequenceseq_name increment by 1 start with 1;
需要主键值时可以调用seq_name.nextval或者seq_name.curval得到,数据库会帮助我们维护这个sequence序列,保证每次取到的值唯一,如:
view plaincopy to clipboardprint?
01.insert into tbl_name(id, name)values(seq_name.nextval, ‘Jimliu’);
02.
03.<id name="id"column="id" type="long">
04. <generator class="sequence">
05. &l