2011-12-27 14 views
1

関連するデータを別のテーブルに挿入したい場合や、挿入が失敗する場合はどうすればよいですか?重要な関連データの一部のみがテーブルの1つに挿入されます。それで、私は明らかに、それ自体では役に立たないので、データの破損がテーブルに残ることは望ましくありません。この種の動作を実装するための最良の方法とテクニックは何ですか?関連するデータへの部分的な挿入に失敗しました

答えて

2

あなたができる最良のものの1つは、自動コミットを0に設定することです。そこから、トランザクション内でネストすることができます。 このようにすれば、テーブルが完全に更新されずにロールバックされ、ディスクに保存されないという条件を指定することができます。

START TRANSACTION; 
SELECT @A:=SUM(salary) FROM table1 WHERE type=1; 
UPDATE table2 SET [email protected] WHERE type=1; 
COMMIT; 

私はMYSQLのウェブサイトからこれを得た:http://dev.mysql.com/doc/refman/5.0/en/commit.html

+0

SELECTを使用してテーブルをチェックせずに、トランザクションの結果に関するバックエンドプログラミング言語から結論を出すことはできますか? –

+0

条件式の値を取得するselectステートメントを作成しない場合、コミットまたはロールバックを知ることになります。 – Algorhythm

0

これは、トランザクションがためているものです。

トランザクションは一連のトランザクションをラップします。終わりに、トランザクションは、あなたが、BEGIN文でトランザクションを開始COMMITでそれをコミットし、ROLLBACKでそれをロールバック

(それらのどれもありません)コミット(行ったすべての変更は、ディスクを打つ)またはロールバックのどちらかであります

関連する問題