2011-01-07 4 views
0

ROLLBACKのSQLクエリーにはどのような種類のエラーがありますか?たとえば

insert into table(a, b) values ('a','b') could generate the following error: 

**a-b duplicate entry** 

しかし、ここで私は、このIDを使用し、この値のIDを選択するこのエラーを無視することができます

select ID from table where a = 'a' and b = 'b' 
insert into brother(table) values (ID) 

最後に、私は、PROCEDUREをCOMMITできます。 IDが必要な場合、このエラーはロールバックには関係しません。

質問は次のとおりです。どのようなエラーが私にPROBEDUREをロールバックするのですか?

ご理解いただきますようお願い申し上げます。

答えて

0

私は、「どのような種類のエラーでINSERT文が原因でMySQLのトランザクションをロールバックさせることができますか?

制約に違反するINSERTは、ロールバックを引き起こします。あなたが概説したような外部キー制約かもしれませんが、それはUNIQUE制約またはCHECK制約でもあります。

有効でない値(NULLでない列にNULL、範囲外の数値、無効な日付)を挿入しようとすると、ロールバックが発生する可能性があります。しかし、サーバー構成によっては、そうでないかもしれません。 (下のリンクを参照してください)

権限がないためにINSERTが失敗することもあります。それもロールバックを引き起こします。

他のプラットフォームでロールバックを引き起こす条件によっては、MySQLでロールバックが発生しない場合があります。エラー が発生した場合、MySQLはあり

オプションが で中央を声明を停止するか、回復するだけでなく、 可能な問題からと 続けています。既定では、サーバー が後者のコースに従います。つまり、サーバーが に最も近い値を無効にする可能性があります( )。

引用符はHow MySQL Deals with Constraintsです。

MySQLのドキュメントのお気に入りの引用符の1つが1.8.6.2. Constraints on Invalid Dataです。

MySQLは、特定の日付に 不正な日付値と(例えば「2000年2月31日」 や「2000-02-00」など) DATETIME列を格納できます。考えられるのは、 は、 へのSQLサーバーのジョブではありません。

かわいいですか?

関連する問題