2

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

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

4

2 回答 2

4

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

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

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

请参阅 Esti answer 以获取一些示例代码的解释。

于 2011-05-31T05:45:47.653 回答
2

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.
于 2011-05-31T08:07:59.647 回答