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

あなたの問題は、最初の行のコロン (:) と 2 行目のコンマ (,) に関係しているようです。

コロンはチェーンされたステートメントを導入し、最初のステートメントを別のステートメントとして見ることができるprijsため、最初のステートメントのすべてのレコードが更新されます (WHERE 句は 2 番目のステートメントにのみ適用されるため)。

コロンを取り出し、SET 指定子の間のコンマを削除して、やり直してください。

コード例の説明については、Esti の回答を参照してください。

于 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 に答える