
求教非主键自增方法。非主键~~(并发问题) 20
并发问题有时候会造成数据重复(因为我现在是每次插入去取数据库里面最大值+1插入),现在有一张表A,A中有一个非主键的字段keyID,类型可以是varchar或者int,b...
并发问题有时候会造成数据重复(因为我现在是每次插入去取数据库里面最大值+1插入),现在有一张表A,A中有一个非主键的字段keyID,类型可以是varchar或者int,bigint都可以,这个字段要求每次插入的时候数据是连续的,比如1,2,3。
数据库是mysql,现在有2个方法,第一是自动插入,但是这个字段不是主键,hibernate我找不到自增的方法,
GenerationType.SEQUENCE序列自增在mysql又不起作用。
第二是加个触发器,在每次插入之前找出最大值+1插入,但是对触发器又不熟悉,求教触发器语法或者解决该问题方法。 展开
数据库是mysql,现在有2个方法,第一是自动插入,但是这个字段不是主键,hibernate我找不到自增的方法,
GenerationType.SEQUENCE序列自增在mysql又不起作用。
第二是加个触发器,在每次插入之前找出最大值+1插入,但是对触发器又不熟悉,求教触发器语法或者解决该问题方法。 展开
8个回答
展开全部
设A表、id为主键、keyid字段可为空
触发器
create trigger t_i on A
for insert
as
begin
update a set keyid=(select max(keyid)+1 from a) where id in(select id from inserted)
end
触发器
create trigger t_i on A
for insert
as
begin
update a set keyid=(select max(keyid)+1 from a) where id in(select id from inserted)
end
追问
触发器操作当前的表会不会报错呢,因为我看了下触发器例子,那些触发器都是操作别的表的,而不是当前正在写入的表

2022-08-05 广告
苏州蓝晓生物科技有限公司。标准化核心产品:公司拥有完整的琼脂糖介质、葡聚糖介质、聚甲基丙烯酸酯介质生产线,年产分离介质50000L,产品质量稳定并达到国际领先水平。核心优势:公司核心技术人员拥有近二十年不同基质的基球开发和官能化的丰富技术经...
点击进入详情页
本回答由苏州蓝晓生物科技有限公司_提供
展开全部
字段keyID属性中有一个标识种子,设置为true,递增量设置为1(sql server中)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每次插值的时候你把之前的最大值查出来加1 在插入
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设置为标识列,但不是主键!不过会有问题,删除后不会连续编号!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序的事务处理有问题吧。每个事务都是forupdate,避免同时更新。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只有用事务了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询