我在ABAP中有一个UPDATE
语句,看起来像:
UPDATE zicstt099 FROM TABLE lt_zicstt099
sy-subrc eq 4
每次更新都失败。
数据库表ZICSTT099
有三个主键:WEB_USER_ID
&EMAIL_ID
和MANDT
字段。
我试图改变EMAIL_ID
值,但同样没有得到更新。
请帮助。
您不能使用UPDATE <target> FROM <wa>.
和UPDATE <target> FROM TABLE <itab>.
语句更改主键字段,因为它们使用主键来查找它们必须更新的记录。
请使用UPDATE <target> SET <set1> ... WHERE ...
语句。
你可以在这里找到细节:https://help.sap.com/doc/abapdocu_753_index_htm/7.53/en-US/abapupdate_source.htm !ABAP_ALTERNATIVE_1@1@
在使用UPDATE之后,如果sy-subrc
= 4,那么至少有一行不能被修改,要么是因为没有找到合适的行,要么是因为修改后的行会导致主键中出现双表项,或者导致数据库表中出现唯一的二级索引。
UPDATE语句设置sy-dbcnt
为修改行数。
你不能'更改'数据库中的关键字段。您可以删除原始条目并使用另一个键插入新条目。但是你不能改变一个键域。(我不能检查实际,如果modify
是自己做的。
如果你必须改变一个关键字段,你应该考虑你的数据库定义。
关于更改关键字段的更多信息:我们可以更新表的主键值吗?
如果您尝试使用前面提到的键创建表,我建议您使用以下语法
update lt_zicstt099 set email_id = 'some value' where WEB_USER_ID = 'some web id'.
要检查表是否更新,可以使用sy-dbcnt来知道更新的行数。如果你仍然遇到问题,请在下面评论