数据库主键的自动增长之总结

  纠结了好久,不知道数据库主键该如何使用,进行数据库插入操作时,不知道怎么使处于主键的列自动进行增长,下面简单介绍一下,【SqlServer 2008数据库软件使用sql语句创建表的相关事项】主键的自动增长:

方式一:

设置“主键”的sql语句:primary key

标识符:使得进行数据库表插入操作时,使主键自动增长,语句是:identity(1,1)

1、使用sql语句进行创建表:

create table student(
    id int identity(1,1) primary key,//主键的设置,还有主键的自动增长
    sid varchar(40) not null,
    sname varchar(30) not null
)

执行一下:创建表成功

创建自动增长的主键表的具体方式:

详见:http://www.cnblogs.com/joeblackzqq/archive/2011/01/24/1943584.html

然后进行插入操作:

insert into student (id,sid,sname) values ('232','哈哈')//或者insert into student (id,sid,sname) values (1,'232','哈哈')
//上面的两种插入语句都不可以,都会报错的,因为id是主键,不能为空;是标识符,不需要插入这列的数据,系统会自动的添加数据列的数据。

//所以,正确的写法是:
insert into student (sid,sname) values('2020','gaga')
得到的结果就是:

方式二:

项目中,每个表中都会有好多个字段名,为了使读效果增加,一般都会增加主键,然后主键自动增长(只是起到一个计数的作用而已),这就会省很大的事。

在设计表的时候就需要增加“主键”且还需要“标识列”,这样子在进行插入操作的时候就可以直接将其字段名省略掉;

比如:

  注意一:在编写sql语句时:其中flowId是主键,其他的都是普通的字段名    【sql语句中是没有flowId字段名的;】

  insert into dbo.Hishop_OrderRetuenFlow (RetuId, OrderId, LinkMan, LinkTel) 
  values (#retuid:VARCHAR#, #orderid:VARCHAR#, #linkman:VARCHAR#, #linktel:VARCHAR#)

  注意二:在进行插入操作时,写url路径时,其中插入的字段的值,也不需要写主键的【易错点】

  注意三:在进行前后台交互时,也不需要对此字段名进行命名或赋值什么的

 方式三:

在创建不同类型的数据库,也会有不同的设置“主键、且主键自动增长”的方式:  如下

  其中Mysql数据库创建主键且主键自动增长时,可以直接对字段设置;然而Oracle数据库则不行,需要使用sequence(序列),实现主键的自动增长;

详细见:http://blog.csdn.net/java3344520/article/details/4907591,{在oracle下触发器实现主键自增}

原文地址:https://www.cnblogs.com/FanSunny/p/4911861.html