在ABAP中更新数据库记录时出现问题:where子句无效

时间:2011-05-30 21:39:46

标签: screen sap abap

我在ABAP中有一个屏幕,可以更新数据库行。它有点工作:我可以更新'row'但问题是,它正在更新表中的每一行而不是where子句中指定的那一行。

这是我正在使用的代码:

UPDATE zmotoren_jat SET:
prijs = zmotoren_jat-prijs,
naam = zmotoren_jat-naam
WHERE motorid = zmotoren_jat-motorid. "this line doesn't seem to work!

知道为什么这不起作用?我确定'motorid'存在:我没有收到错误,我使用相同的行motorid = zmotoren_jat-motorid来删除行,这确实有用。

2 个答案:

答案 0 :(得分:2)

您的问题似乎与第一行中的冒号(:)有关。冒号引入了多个以下语句,它可能会看到第一个使用prijs作为单独的语句,从而更新第一个语句中的所有记录(因为WHERE子句只适用于第二个语句)。 取出冒号并删除SET说明符之间的逗号,然后重试。

答案 1 :(得分:1)

Mydog有正确的答案。

基本上您的语法转换为以下内容:

UPDATE zmotoren_jat SET prijs = zmotoren_jat-prijs.
UPDATE zmotoren_jat SETnaam = zmotoren_jat-naam
 WHERE motorid = zmotoren_jat-motorid.

即更新表中每条记录的价格,然后更新指定ID的名称。 你想要的是

UPDATE zmotoren_jat 
  SET prijs = zmotoren_jat-prijs
      naam  = zmotoren_jat-naam
WHERE motorid = zmotoren_jat-motorid.