あるデータベース テーブルに新しい行を挿入し、いくつかの条件に基づいて別のデータベース テーブルの既存の行を更新するには、SQL ステートメントが必要です。
これを行う方法はありますか?1 つの SQL ステートメントで 1 つのテーブルに行を挿入し、別のデータベース テーブルの行を更新するには?
前もって感謝します!
あるデータベース テーブルに新しい行を挿入し、いくつかの条件に基づいて別のデータベース テーブルの既存の行を更新するには、SQL ステートメントが必要です。
これを行う方法はありますか?1 つの SQL ステートメントで 1 つのテーブルに行を挿入し、別のデータベース テーブルの行を更新するには?
前もって感謝します!
はい、それらはTransactionsSTART TRANSACTION and COMMIT/ROLLBACK
と呼ばれ、次のようなもので実装されます。
START TRANSACTION;
INSERT INTO ...
UPDATE table2 SET name='TOTO' WHERE type=1;
COMMIT;
編集
これは実際には1 つのSQL クエリではありませんが、操作はアトミックに行われます。それが必要なことだと思います。
1 つの SQL ステートメントで、複数ではなく 1 つのテーブルを更新できます。そのステートメントが の場合、MERGE
挿入/更新/削除アクションを指定できますが、同じ 1 つのターゲット テーブルのみを対象としています。
一貫性だけが必要な場合は、トランザクションを使用してください。トランザクションがコミットされるまで、トランザクション内の変更は外部から見えません。
1 回の更新 (ユーザーが制御できない) によって調整された挿入が行われるようにする場合はon update
、更新されるテーブルでトリガーを使用します。トリガーは、適切な行を他のテーブルに挿入します。
はい、ストアド プロシージャで可能です。
これを見る:ストアド プロシージャ
Trigger
最初のテーブルの挿入時に2番目のテーブルを更新するために使用できます