0

私はSQLにかなり慣れていません。現在、私はトランザクションを理解しようとしていますが、かなり迷っています。そのため、SQL トランザクションの例をいくつか示していただければ幸いです。

私が正しいと思うのは、通常、トランザクションはDBMソフトウェアで実装され、ユーザーインターフェースで行うことに基づいてそれらをほぼ一緒に構築するということです。

たとえば、複数の行を削除したい場合、トランザクションはどのようになりますか? 次のようになりますか?

  1. セーブポイント sp1;
  2. DELETE FROM customers WHERE fname = “James” AND lname = “Belik
  3. 専念;
  4. セーブポイント sp2;
  5. DELETE FROM customers WHERE fname = “James” AND lname = “Belik;
  6. 専念;

または、そうでない場合はどうなりますか?また、SET TRANSACTION はどこに行くのでしょうか?

どんな助けでも大歓迎です、ありがとう。

4

2 に答える 2

0

SQL (ジェネリック)、MySQL、および Access の質問にタグを付けました。SQL の各「フレーバー」には独自の構文がある場合があります (たとえば、MySQL については、ここを参照してください)。ただし、一般的な例は

START TRANSACTION;
UPDATE BankAccount SET Balance=Balance-5 WHERE Owner='James';
UPDATE BankAccount SET Balance=Balance+5 WHERE Owner='Gord';
COMMIT;

2 番目の UPDATE ステートメントが失敗すると、トランザクション全体が「ロールバック」され、両方の口座残高は変更されません。両方の更新が成功した場合にのみ、$5 があなたのアカウントから私のアカウントに送金されます。

于 2013-05-21T21:03:12.893 に答える
0

トランザクションは、一連の SQL ステートメント全体を成功させたい場合に使用されます。シリーズのいずれかの部分が失敗した場合、データベースは BEGIN TRANSACTION の前の状態にロールバックされます。SQL ステートメントのシーケンス全体をトランザクションにラップします。

通常の例は、銀行口座間の送金です。そのためには、1 つの口座からある金額を引き落とし、別の口座に同じ金額を入金する必要があります。1 つだけが成功すると、転送のバランスが取れなくなるため、両方の操作が成功する必要があります。たとえば、クレジットは成功したが、デビットは失敗した場合、誰かが無料のお金を手に入れました。

于 2013-05-21T19:15:42.480 に答える