SQL では、操作のアトミック性、耐久性、分離性を確保するために、BEGIN と END がトランザクション境界マーカーとして使用されます。 BEGIN はトランザクションを開始し、END はトランザクションをコミットまたはロールバックします。 1. BEGIN はトランザクションを開始します。 2. 操作 (挿入、更新など) を実行します。 3. COMMIT はトランザクションをコミットし、変更を永続的にします。 4. ROLLBACK はトランザクションをロールバックし、変更を元に戻します。
SQL での BEGIN と END の使用法
SQL では、BEGIN と END はトランザクション境界マーカーとして使用されます。トランザクションは、すべて成功するかすべて失敗する一連のアトミック操作です。 BEGIN と END は、アトミック性を確保するためにこれらの操作をグループ化するために使用されます。
使用法
BEGIN ステートメントはトランザクションを開始し、END ステートメントはトランザクションをコミットまたはロールバックします:
<code class="sql">BEGIN; -- 开始事务 -- 执行操作... COMMIT; -- 提交事务(使更改永久化) -- 或者 ROLLBACK; -- 回滚事务(撤消更改)</code>
Atomicity
トランザクションの原子性とは、すべての操作が成功するか、すべての操作が失敗するかのいずれかを意味します。トランザクション中にエラーが発生した場合、ROLLBACK ステートメントは実行されたすべての操作を元に戻し、データベースをトランザクション開始時の状態に復元します。
永続性
COMMIT ステートメントは、トランザクション内の変更を永続的にします。 COMMIT ステートメントが実行されると、障害が発生したりアプリケーションがシャットダウンしたりしても、これらの変更はデータベースに保持されます。
分離
トランザクションは分離も提供します。つまり、COMMIT ステートメントが実行されるまで、1 つのトランザクションでの変更は他のトランザクションには表示されません。これにより、同時アクセスによるデータの不整合を防ぐことができます。
例
次の例は、SQL での BEGIN と END の使用を示しています。
<code class="sql">BEGIN; INSERT INTO customers (name, email) VALUES ('John Doe', 'john.doe@example.com'); UPDATE customers SET email = 'john.doe@new-example.com' WHERE id = 1; COMMIT;</code>
この例では、BEGIN ステートメントがトランザクションを開始します。そして、新しい顧客の挿入と既存の顧客の電子メールの更新という 2 つの操作を実行します。 COMMIT ステートメントはトランザクションをコミットし、変更を永続的にします。挿入または更新中にエラーが発生した場合、ROLLBACK ステートメントは両方の操作をロールバックします。
以上がSQLでの使用の開始と終了の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。