吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 149|回复: 3
收起左侧

[经验求助] 数据库相关求助

[复制链接]
lorzl 发表于 2024-5-16 16:28
50吾爱币
本帖最后由 lorzl 于 2024-5-16 16:37 编辑

要求是这样的,往数据表A中插入数据时,有个编号字段b,b是个int类型的
1.编号每次生成新的,不能跳号
2.回收机制,之前生成过的编号,可能会废弃,废弃后优先使用(废弃后表中数据不删除,这里有个字段c=1用来标识被废弃)
3.多处同时插入时,先插入的b要比后插入的b小(取回收的除外)
4.由于在存储过程中先取出暂存,再进行插入的,有可能取完没有用,导致另外一个过程取出的就不太对了得插入前判断一下重新取

解决前2点即可采纳,后面的能解决更好!!!

举例:
  第一次插入时b值为1
  第二次插入时b值为2
  第三次插入时b值为3
  b为2的记录废弃,更新c=1
  第四次插入时b应为2
  第五次有两个过程1,过程2 同时去插入 过程1取到4,过程2取到5,但是过程1终止执行,此时过程2要插入b=5的就不对,应该为4

最佳答案

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

YUYELOVE 发表于 2024-5-16 16:28
试试

[SQL] 纯文本查看 复制代码
INSERT INTO t1 (b)
SELECT ISNULL(
   (SELECT min(b)
    FROM t1
    WHERE c = 1
    AND NOT EXISTS (SELECT 1 FROM t1 as t2 WHERE t1.b = t2.b AND t2.c = 0)),
   (SELECT max(b) + 1 FROM t1 WHERE c = 0)
);
 楼主| lorzl 发表于 2024-5-16 17:21
 楼主| lorzl 发表于 2024-5-16 18:41
本帖最后由 lorzl 于 2024-5-16 18:42 编辑
YUYELOVE 发表于 2024-5-16 17:31
试试

[mw_shl_code=sql,true]INSERT INTO t1 (b)

6的6的 谢谢  就是过程中未使用的点没有解决,第4点
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-6-13 20:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表