这段时间有个项目id频繁出现 id冲突的问题 一真找不到原因 后来想到了个办法 在新建取id时先把到到的id保存起来

上代码 望大神指点下

/// <summary>
/// 到表中的最大id
/// </summary>
/// <param name="fld">字段名--必须是int型</param>
/// <param name="tbl">表名</param>
/// <param name="qrytmp">临时数据集</param>
/// <param name="RdType">字段</param>
/// <returns></returns>
function TMainForm.GetMaxID(fld, tbl: string; qrytmp: tadoQuery; RdType: string): string;
var
s, cId, cCondition: string;
begin
cCondition := ' where cRdType = ' + quotedstr(RdType); s := 'select isnull(max(' + fld + '),0) +1 from ' + tbl; if RdType <> '' then
s := s + cCondition; DoQuery(qrytmp, s, true); cid := qrytmp.Fields[0].AsString; s := 'select count(1) from ' + tbl;
if RdType <> '' then
s := s + cCondition; DoQuery(qrytmp, s); if RdType <> '' then
begin
if qrytmp.Fields[0].AsInteger <= 0 then
begin
s := 'insert yq_GetMaxID (cRdType,cMaxid) values ('
+ quotedstr(RdType) + ',' + cid + ')';
DoQuery(qrytmp, s, false);
end else
begin
s := 'update yq_GetMaxID set cMaxID = ' + cid + cCondition; DoQuery(qrytmp, s, false);
end;
end; result := cid;
end;

  

yq_GetMaxID是建的一个临时表

如下:

create table yq_GetMaxID
(
id int identity primary key,
cRdType nvarchar(32) default '',--出入库类型
cMaxId int default 0 --这个地方应是i开头
)

  

执行sql语句如下:

/// <summary>
/// 执行sql语句
/// </summary>
/// <param name="adoquery">数据集</param>
/// <param name="strSQL">sql语句</param>
/// <param name="bOpen">是否执行open</param>
procedure TMainForm.DoQuery(var adoquery: TADOQuery; strSQL: string; bOpen: boolean);
begin
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add(strSQL);
if bopen then
begin
adoquery.Open;
end else
adoquery.ExecSQL; end;

  

delphi 并发取数据库id问题的更多相关文章

  1. sql 数据量高并发的数据库优化(转)

    Mysql 大数据量高并发的数据库优化 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实 ...

  2. 高并发非自增ID如何设计?

    博友们一起来讨论下高并发非自增ID如何设计? 底层是很重要的,我最近设计底层,通用底层. 我想跟大家谈论下这个话题: 如何在高并发环境下设计出一套好用的非自增ID的添加操作的解决方案?更新的操作我随机 ...

  3. 大数据量高并发的数据库优化详解(MSSQL)

    转载自:http://www.jb51.net/article/71041.htm 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能. ...

  4. SqlServer中用@@IDENTITY取最新ID不准的问题

    最近遇到了一个SqlServer中用@@IDENTITY取最新ID不准的问题,经过在网上的一番查找,找到了如下资料,略作记录:"一个网友问我一个关于@@IDENTITY的问题.他的数据库中有 ...

  5. Python--读取数据库

    原文地址:https://www.wukong.com/answer/6591280609824342286/?iid=40708017633&app=news_article&sha ...

  6. python爬虫构建代理ip池抓取数据库的示例代码

    爬虫的小伙伴,肯定经常遇到ip被封的情况,而现在网络上的代理ip免费的已经很难找了,那么现在就用python的requests库从爬取代理ip,创建一个ip代理池,以备使用. 本代码包括ip的爬取,检 ...

  7. delphi的取整函数round、trunc、ceil和floor

    delphi的取整函数round.trunc.ceil和floor 首先引入math单元 uses math; 1.Round(四舍六入五留双) 功能说明:对一个实数进行四舍五入.(按照银行家算法) ...

  8. 不能取组织ID

    应用 Oracle   Purchasing 层 Level Function 函数名 Funcgtion Name PO_POXBWVRP 表单名 Form Name POXBWVRP 说明 Des ...

  9. 自学Python之路-Python并发编程+数据库+前端

    自学Python之路-Python并发编程+数据库+前端 自学Python之路[第一回]:1.11.2 1.3

随机推荐

  1. 学习ES6生成器(Generator)

    背景 在JS的使用场景中,异步操作的处理是一个不可回避的问题,如果不做任何抽象.组织,只是“跟着感觉走”,那么面对“按顺序发起3个ajax请求”的需求,很容易就能写出如下代码(假设已引入jQuery) ...

  2. android studio 和idea 导入library工程

    idea 导入library方法 把工程Import成module后,具体的操作看图: 同样的,打开Project structure,点开你要作为library的module,然后点击android ...

  3. Play Framework 完整实现一个APP(十二)

    1.定制CRUD管理页面 > play crud:ov --layout 替换生成文件内容 app/views/CRUD/layout.html #{extends 'admin.html' / ...

  4. IT人经济思维之创业 - 创业与投资系列文章

    前面笔者曾经写过文(IT从业者的职业规划),介绍了IT从业者的职业规划,对职业路做了规划.然后,又写了文(IT从业者的职业道路(从程序员到部门经理) - 项目管理系列文章),从技术到管理的一个笔者自己 ...

  5. JVM-Class文件

    一个 Class 文件描述了类或接口的字段,方法,父类,访问权限等全部信息.其实,它只是一种能被 JVM 识别的数据格式,就和 UDP 8字节头部一样,这就是规范,标准!所谓"不闻不若闻之, ...

  6. 不同环境下文件上传Uncaught SyntaxError: Unexpected end of input

    很奇怪的问题,相同的代码和相同的数据,在两台linux服务器上执行文件上传,一台正常上传,一台在ftl页面 报:Uncaught SyntaxError: Unexpected end of inpu ...

  7. 利用 spring bean 的属性 init-method 解决因为数据库连接没有初始化而导致首次点击页面超慢的问题

    问题的描述: 一个项目,涉及到了 两个数据源,分别使用的是 两个不同的 数据库连接池,其中一个是 poxool 连接池,问题在于,spring在启动时,只初始化其中的一个 数据库连接池中的数据库连接, ...

  8. 关于Redis数据过期策略

    1.Redis中key的的过期时间 通过EXPIRE key seconds命令来设置数据的过期时间.返回1表明设置成功,返回0表明key不存在或者不能成功设置过期时间.在key上设置了过期时间后ke ...

  9. 【转】jquery 中scrollTop在Firefox下不起作用

    原文链接:http://stackoverflow.com/questions/8149155/animate-scrolltop-not-working-in-firefox Animate scr ...

  10. html中的meta详解

    1  name=viewport <meta name="viewport" content="width=device-width,initial-scale=1 ...