
你这是什么数据库?
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,主键生成器在数据库中不自动生成等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)