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

发布于 2024-11-10 06:24:29 字数 384 浏览 0 评论 0原文

我在 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 删除一行,这确实有效。

I have a screen in ABAP that makes it possible to update a database row. It's sort of working: I can update the 'row' but the problem is, that it's updating EVERY row in the table and not the one specified in the where clause.

This is the code I'm using:

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

Any idea why this won't work? I'm sure that 'motorid' exists: I'm not getting an error and I'm using the same line, motorid = zmotoren_jat-motorid to delete a row, which does work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

究竟谁懂我的在乎 2024-11-17 06:24:29

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

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

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

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

Your problem seems to have to do with the colon (:) in the first line, and the comma (,) in the second line.

The colon introduces chained statements, and it could be seeing the first one with prijs as a separate statement, thereby updating all records in the first statement (because the WHERE clause then only applies to the second statement).

Take out the colon and remove the comma between the SET specifiers and try again.

See Esti answer for an explanation with some example code.

荒芜了季节 2024-11-17 06:24:29

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.

Mydog has the correct answer.

Basically your syntax translates to the following:

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

i.e it updates the price for every record in the table, and then updates the name for the specified ID.
what you want is

UPDATE zmotoren_jat 
  SET prijs = zmotoren_jat-prijs
      naam  = zmotoren_jat-naam
WHERE motorid = zmotoren_jat-motorid.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文