点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
我们在生产中遇到了转储,其中insert语句无法更新自定义数据库表。包含更新数据库表的条目的内部表是IT_LABELS。 如下面的屏幕截图所示,IT_LABELS包含两个条目:
向下滚动*
我的问题是,这两个条目是表IT_LABELS的内容吗?
如果是这样,因为两个条目相同,这是导致转储的原因。 我已经在数据库表中检查了该条目,但是它仍然不存在。 当内部表源包含相同的条目(相同的主键)时,即使该条目在数据库中尚不存在,insert语句也会失败吗?
(56.0 kB)
您好 Katherine Darunday
是的,这些是IT_LABELS表中的条目。
是的,如果违反了主键或唯一索引,则INSERT将失败。
如果您尝试同时插入两个条目,则无论具有相同键的第一条记录是否已在数据库表中,INSERT语句都会失败。 因为对于INSERT,当尝试插入第二条记录时,第一条记录已经在表中。
该语句失败时,不会提交任何数据库更改,因此您无法在DB表中看到任何记录 。
亲切的问候,Mateusz
感谢您的澄清,Mateusz!
此致
Kath
当您从未检查的区域(文件,人等)插入数据时,可以将参数ACCEPTING DUPLICATES添加到INSERT语句中
https://help.sap.com/doc/abapdocu_751_index_htm/7.51/zh-cn/ abapinsert_source.htm
Katherine Darunday ,带有"接受重复键",在 如果重复项仅在您的内部表中,则只插入第一个唯一记录,所有重复项将被丢弃。 如果数据库和内部表中已经存在重复项,则内部表中的所有重复项将被丢弃。
如果您不使用" ACCEPTING DUPLICATE KEYS",则可以使用CX_SY_OPEN_SQL_DB捕获错误,并且 一旦遇到重复的密钥,插入操作将停止,并且只有第一个唯一记录将在数据库中。
如果您既不使用" ACCEPTING DUPLICATE KEYS",也不捕获错误CX_SY_OPEN_SQL_DB,您将最终获得 您遇到的转储,根本不会插入任何记录。
一周热门 更多>