我在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.