2 qq 25496571 qq_25496571 于 2017.01.08 22:44 提问

急求,我想实现注册时,数据库中的主键自动+1

我是用Java写的,然后设置了静态变量id,每次插入注册的内容是id+1,但是它在注册时会出现违反了PRIMARY KEY 约束‘PK_user‘(我要插入数据的数据库中的表的名字是dianjia)

13个回答

zjn640322
zjn640322   2017.01.09 08:09

你的主键类型是什么?主键你设置了自增,就不需要再插入值得时候赋值,赋值就会报错

small_kidy
small_kidy   2017.01.08 22:54

你的主健是ID这个字段还是user这个字段,主健自增插入时就不需要给主键赋值

plazyj
plazyj   2017.01.08 23:01

为什么不用序列啊,序列自增不就完了

lyhoo163
lyhoo163   Rxr 2017.01.09 07:18

主键使用日期时间值,也不会重复的。

Lyndon89757
Lyndon89757   2017.01.09 08:14

首先,你的DB是oracle还是sqlserver, oracle最好用序列,sqlserver好像有个自增的checkbox,尽量不要用程序处理主键,不然可能会造成死锁,后果不堪设想。

sj18182656342
sj18182656342   2017.01.09 08:34

建一个序列id 引用序列的自增长

YoFog
YoFog   2017.01.09 09:04

写一个sequence不就好了吗

code_ang
code_ang   2017.01.09 09:25

你用的什么数据库啊,oracle用序列,mysql直接设置主键自增就好了

xionglangs
xionglangs   Rxr 2017.01.09 09:55

你的id静态变量用的是int类型,是否超过了它的长度,你这样做如果超过了int类型的长度,这个是会报错的,所以不建议使用静态变量自增,可以使用数据库的sequence,或者是在添加前查询一下最大id,之后加一。

u012976158
u012976158   2017.01.09 10:46

数据库中id设置为主键自增 那么在你注册插入数据的时候不用插入id的值,数据库会自动给你生成

共13条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
向MYSQL数据库的表中插入有自动加一主键的数值
昨天晚上没搞成,早上起来搞定了!原来的表中ACCOUNT中 ID  不是自动增加的,别人注册账户的时候需要制定ID,这个是很不好的,所以把ID设定为自动加一,用户不用管ID,只注册登记其他的信息,所以修改MYSQL。mysql> ALTER TABLE `database`.`table` MODIFY COLUMN `id` INTEGER AUTO_INCREMENT; 然后实现程序中的增加,
更改sql数据库主键自动加一
<br />-- alter the table T_Resources use WebSiteDatabase go alter table T_Resourses drop column go alter table T_Resourses add ID int primary key identity(1, 1)  
Oracle 自动加一主键字段生成
<br />来源说明:本文系转贴,原文网址http://www.cnblogs.com/leup/archive/2007/11/18/962952.html<br />转贴原因:Oracle自增字段和SQL不同,但是调用很有意思,多个人同时调用,不会有唯一的ID生成.<br /> <br />在access中有自动编号的数据类型,MSSQL和MYSQL也都有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值,而oracle没有自动增长的数据类型,我们需要建立一个自动增长的序列号,插入记录时要把
实体类中有主键,数据库中主键是自增的,使用linq插入记录时,由于实体类有数据产生报错的解决方法
使用 LINQ , 向数据库中插入一条数据。 会报出 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'RoleInfo' 中的标识列插入显式值。 原因是因为在数据库表中,有标识列,而标识列又不允许修改。所以会报出这个错误。。 解决方法是: 在类的字段中,为声明的字段加上 isDBGenerated=true; 如[Column(isPrimaryKey = true, Name
Mybatis中的insert获取自增主键的值
最近在学习mybatis的时候,想起来之前学hibernate有一个需求,插入数据到数据库中后要求返回其主键。类比hibernate来看,mybatis对于支持自增的数据库和不支持自增策略的数据库在插入后获取主键值的方法类似。这里总结一下,由于本人水平有限,如果不足或错误请指出,小弟将非常感谢! 一.支持自增主键的mysql,sql Server,会使用原生的jdbc中的一个方法getGener
DB2中自动增长主键的方法
1 )当想将表中一列修改为自动增长时,可用下面命令: Alter table alter column set generated always as identity (start with 1,increment by 1) 上面命令是在改一表中列的属性时,在网上找到的很有用。   2)当修改表中一列自动增长的开始值时,可用下面的命令: ALTER TABLE
关于数据库中的主键的自动增长
Mysql、SqlServer、Oracle主键自动增长的设置       1、把主键定义为自动增长标识符类型 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如: create table customers(id int auto_increment primary key not null, name varchar(15)); i
sql 设置主键自增从1开始
一、dbcc方法 --dbcc checkident('test',reseed,0) --1)首先创建一个临时表 create table #tmp ( ID int identity(1,1) not null, name varchar(50) null ) select * from #tmp --2)往这个临时表中插入三条记录 insert into #tmp(
oracle添加数据时主键自动增长
CREATE TABLE STUDENT( --创建学生表  ID NUMBER(10) PRIMARY KEY,   --主键ID  SNAME VARCHAR2(20),);此时给学生表添加数据时 必须指定idINSERT INTO STUDENT VALUES(1,'Tom');下面用触发器和序列结合使得添加数据时id自动增长 不要指定了 --创建序列CREATE SEQUENCE SEQ_...
Java获取数据库自增主键表中插入数据的ID
JDBC获取自增主键