Sql “错误”&书信电报;文件名>;已与<;字段/值…>;(132)";

Sql “错误”&书信电报;文件名>;已与<;字段/值…>;(132)";,sql,runtime-error,openedge,Sql,Runtime Error,Openedge,我在一家医学实验室工作,我们使用一个进度数据库(10.2B版)和一个4GL编程商业应用程序作为我们的中心实验室信息系统 我们目前正在开发不同的sentinel应用程序(例如lab guide),它们使用ODBC连接(基于SQL)与进度数据库交互。应用程序是用C#编程的 这种交互可以很好地读取和更新记录。。但是,在现有表中插入新记录时,sentinel和中央应用程序之间似乎存在冲突。通过sentinel应用程序插入新记录不会产生错误,但当我随后通过中央系统插入新记录时,会出现以下错误:132已存在

我在一家医学实验室工作,我们使用一个进度数据库(10.2B版)和一个4GL编程商业应用程序作为我们的中心实验室信息系统

我们目前正在开发不同的sentinel应用程序(例如lab guide),它们使用ODBC连接(基于SQL)与进度数据库交互。应用程序是用C#编程的

这种交互可以很好地读取和更新记录。。但是,在现有表中插入新记录时,sentinel和中央应用程序之间似乎存在冲突。通过sentinel应用程序插入新记录不会产生错误,但当我随后通过中央系统插入新记录时,会出现以下错误:132已存在


基于4GL的商业应用程序似乎没有看到通过SQL ODBC连接向数据库添加了新记录。如何防止发生此错误?请记住,我无法访问商用4GL系统。

此错误告诉您记录已经存在,而不是它找不到它


毫无疑问,应用程序有自己的填充各种表的方式,您对应用程序“玩得不好”。您需要与应用程序供应商交谈,了解应用程序的期望值,或者让他们开发一个导入例程,以对应用程序友好的方式导入您的数据

应用程序很可能使用序列或序列样式表来跟踪下一个ID号。如果您只是查找插入的最大当前值,而没有更新这些序列值,那么您将遇到问题(如错误)。具体而言,4gl应用程序很可能正在使用创建触发器填充id字段。SQL客户端不知道也不会触发4gl触发器。因此,应用程序通过4gl触发器内置以维护表关系等的任何逻辑都不会受到SQL应用程序的尊重。你们都缺少OP编写的内容,而不是他诊断问题的内容。SQL程序正在添加记录,并且它正在粘贴。应用程序正在抱怨它正在尝试添加一条记录,而它正在尝试添加的记录已经存在,这意味着它正在尝试添加一条与SQL程序添加的记录具有相同密钥的新记录。如果这违反了唯一索引,那么“132”错误就是预期的和可以理解的结果。这就是我想说的:-)他们正在用SQL获取下一个可用数字(键)并插入一条记录。4GL出现并尝试重用该数字,因为SQL没有增加查找表/etc。感谢您的回复。。今天我发现了一个序列表和一个内置函数来重新同步数字。在向中央应用程序添加内容之前执行手动重新同步时,不会生成错误!!是 啊然而,现在我必须了解如何操作这个表以及它是如何构造的。再次感谢你的建议。