SQL server 已插入数据如何自动生成主键

SQL server 已插入数据如何自动生成主键,第1张

你这是什么数据库?

sql

server

的话,你可以把cid设为自增加1,这样就可以实现在插入的时候自动生成cid的值了;

如果是oracle,你可以在oracle数据库里建个sequense,通过

select

sequensenext()

from

dual

得到自增的序列号;

代码如下:

--创建测试表 

CREATE TABLE [Identity]( 

Id INT IDENTITY(1,2) NOT NULL PRIMARY KEY,--种子的起始值1,步长2 

Number VARCHAR(20) UNIQUE NOT NULL, 

Name VARCHAR(20) NOT NULL, 

Password VARCHAR(20) DEFAULT(123), 

Description VARCHAR(40) NULL 

--插入记录 

INSERT INTO [Identity](Number,Name,Description) VALUES('001','1st','Id=1,因为起始值1') 

INSERT INTO [Identity](Number,Name,Description) VALUES('002','2nd','Id=3,因为起始值1,步长2') 

INSERT INTO [Identity](Number,Name,Description) VALUES('003','3rd','Id=5,由于字符长度超长,报错插入失败,造成此Id产生后被放弃') 

INSERT INTO [Identity](Number,Name,Description) VALUES('004','4th','Id=7 not 5,因为第三条记录插入失败') 

--检索记录,查看结果 

SELECT  FROM [Identity]

自动生成的意思是你指定一个序列给hibernate,hibernate会找到序列的下一个值给你的主键

比如你创建一个序列

CREATE SEQUENCE user_id_seq INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 NOCACHE -- 不建缓冲区

然后在映射文件里面把这个序列指定给hibernate,让序列与某个主键相关联,然后hibernate就知道如何自增了!!

<id name="id" column="USER_ID" >

<generator class="sequence">

<param name="sequence">user_id_seq</param>

</generator>

</id>

ok再试试希望对你有帮助

这种字符型的需要自动增长的主键是不能直接设置的,你可以通过结合代码来实现:

设置ADMMA表PID字段为主键,int类型,自动增长;MA00001这些数据存在另一个固定长度的字符串字段RealID中。

插入数据时先插入一条获取到PID,根据PID用正则表达式生成RealID,再更新该条数据的RealID值。

还有一种方式可以尝试,我不太确定能不能直接用,就是RealID做成计算列,该列的值直接通过PID换算得来。

以上就是关于SQL server 已插入数据如何自动生成主键全部的内容,包括:SQL server 已插入数据如何自动生成主键、怎样用SQL向数据库中批量的插入数据,主键是随机生成的、刚学习hibernate,主键生成器在数据库中不自动生成等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9758704.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存