更新数据库记录时where子句出现问题



我在ABAP中有一个屏幕,可以更新数据库行。它有点工作:我可以更新"行",但问题是,它更新的是表中的每一行,而不是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!

知道为什么这不起作用吗?我确信"moted"存在:我没有收到错误,我正在使用同一行motorid = zmotoren_jat-motorid删除一行,这确实有效。

您的问题似乎与第一行的冒号(:)和第二行的逗号(,)有关。

冒号引入了链式语句,它可以将带有prijs的第一个语句视为一个单独的语句,从而更新第一个语句中的所有记录(因为WHERE子句只适用于第二个语句)。

取出冒号并删除SET说明符之间的逗号,然后重试。

请参阅Esti答案以获得一些示例代码的解释。

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.

相关内容

  • 没有找到相关文章

最新更新