我在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
来删除行,这确实有用。
答案 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.