`
ldzyz007
  • 浏览: 716469 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

把主键定义为自动增长标识符类型

阅读更多
1.把主键定义为自动增长标识符类型

MySql
在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:

create table customers(id int auto_increment primary key not null, name varchar(15));
insert into customers(name) values("name1"),("name2");
select id from customers;

Sql Server
在MS SQLServer中,如果把表的主键设为identity类型,数据库就会自动为主键赋值。例如:

create table customers(id int identity(1,1) primary key not null, name varchar(15));
insert into customers(name) values('name1'),('name2');
select id from customers;

SET IDENTITY_INSERT customers ON;

insert into customers(id,name) values(1,'name1');

SET IDENTITY_INSERT customers OFF;

alter table 表名 drop constraint 主键名
alter table 表名 add  constraint 主键名 primary key (column1,column2,....,column)

2.从序列中获取自动增长的标识符

Oracle

在Oracle中,可以为每张表的主键创建一个单独的序列,然后从这个序列中获取自动增加的标识符,把它赋值给主键。例如一下语句创建了一个名为customer_id_seq的序列,这个序列的起始值为1,增量为2。

create sequence customer_id_seq increment by 2 start with 1

一旦定义了customer_id_seq序列,就可以访问序列的curval和nextval属性。

curval:返回序列的当前值
nextval:先增加序列的值,然后返回序列值
以下sql语句先创建了customers表,然后插入两条记录,在插入时设定了id和name字段的值,其中id字段的值来自于customer_id_seq序列。最后查询customers表中的id字段。

create table customers(id int primary key not null, name varchar(15));
insert into customers values(customer_id_seq.nextval, 'name1');
insert into customers values(customer_id_seq.nextval, 'name2');
select id from customers;

3.通过触发器自动添加id字段

create or replace
trigger trg_customers before insert on customers for each row
begin
select CUSTOMER_ID_SEQ.nextval into :new.id from dual;
end;

insert into customers(name) values('test');


分享到:
评论
1 楼 勇往直前wwt 2014-08-28  
这样是自动增长,但每次id还得插入,如何只插入其他字段而让id自动增长呢

相关推荐

    mysql把主键定义为自动增长标识符类型

    而将主键定义为自动增长标识符类型(通常使用`INT`并配合`AUTO_INCREMENT`属性)是一种常见的实践,尤其在需要连续、唯一的序列号时。这种设计模式在关系型数据库中广泛使用,可以避免人为地为每条新记录分配一个...

    深入Mysql,SqlServer,Oracle主键自动增长的设置详解

    1、把主键定义为自动增长标识符类型MySql在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如: 代码如下:create table customers(id int auto_increment primary key not null, name...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    6.1.1 把主键定义为自动增长标识符类型 123 6.1.2 从序列(Sequence)中获取自动增长的标识符 124 6.2 Java语言按内存地址区分不同的对象 125 6.3 Hibernate用对象标识符(OID)来区分对象 126 6.4 Hibernate的...

    精通Hibernate:对象持久化技术第二版part3

    6.1.1 把主键定义为自动增长标识符类型 123 6.1.2 从序列(Sequence)中获取自动增长的标识符 124 6.2 Java语言按内存地址区分不同的对象 125 6.3 Hibernate用对象标识符(OID)来区分对象 126 6.4 Hibernate的...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     6.1.1 把主键定义为自动增长标识符类型  6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     6.1.1 把主键定义为自动增长标识符类型  6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     6.1.1 把主键定义为自动增长标识符类型  6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     6.1.1 把主键定义为自动增长标识符类型  6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器...

    mysql实现char类型主键自增长

    在MySQL数据库管理中,自增长主键是一种常见的设计模式,主要用于自动为每一行记录生成一个唯一的标识符。然而,这种自增长通常与整型数据类型(如INT)关联,而较少见于字符型数据(如CHAR)。本文将深入探讨如何在...

    oracle触发器实现主键自动增长

    在Oracle数据库中,实现主键自动增长是一种常见的需求,尤其在设计高并发、大数据量的系统时,确保每个记录都有一个唯一且连续的标识符变得至关重要。本文将深入探讨如何利用Oracle触发器来实现这一功能,同时也会...

    sqlserver自动增长字段设置方法.rar

    在SQL Server数据库管理系统中,自动增长(Identity)字段是一个非常重要的特性,主要用于为表中的记录生成唯一的标识符,通常作为主键使用。本教程将详细解释如何在SQL Server中设置和管理自动增长字段。 首先,...

    oracle主键自动增长

    在Oracle数据库中实现类似MySQL的主键自增功能...通过以上步骤,我们可以有效地在Oracle数据库中实现类似MySQL的主键自动增长功能。这种方式不仅保持了数据的一致性和完整性,还提高了开发效率和数据库管理的便利性。

    MyBatis主键自动生成方法.pdf

    1. `useGeneratedKeys="true"`:这是针对支持自动增长主键的数据库,如MySQL。在`<insert>`标签内设置`useGeneratedKeys="true"`,MyBatis会尝试获取数据库自动生成的主键值。在MySQL中,执行`INSERT`语句后,可以...

    Hibernate主键生成方式

    在Java的持久化框架Hibernate中,主键生成策略是一个关键的概念,它决定了如何为数据库中的实体对象生成唯一的标识符(主键)。以下是关于Hibernate主键生成方式的详细说明: 1. **Identity方式**:`...

    mysql取得自动增长的主键值

    在MySQL数据库中,自动增长字段是一种非常有用的特性,尤其是在需要为主键分配唯一标识符的情况下。通过设置一个列的`AUTO_INCREMENT`属性,每当向表中插入新记录时,该列的值会自动递增。这种方式极大地简化了数据...

    SQL Server设置主键自增长列(使用sql语句实现)

    当创建新表时,你可以直接定义一个字段为`identity`类型,这会使其成为主键并自动增长。以下示例创建了一个名为`tb`的表,其中`id`字段是主键,并且设置自增长起始值为1,每次增加1: ```sql CREATE TABLE tb ( ...

    oracle 自增长主键.doc

    Oracle数据库系统中,自增长主键是一种常见的设计模式,用于创建具有自动递增的唯一标识符。在Oracle中,我们通常使用序列(Sequence)来实现这个功能,而不是像其他数据库系统那样使用内置的自增机制。以下是对...

    sql主键产生器

    2. **自动增长(Auto Increment)/标识列(Identity Column)**:在MySQL、SQL Server和PostgreSQL等数据库中,可以设置某列为主键并指定其为自动增长。每当插入新行时,数据库会自动为该列提供一个新的唯一值。 3....

Global site tag (gtag.js) - Google Analytics