2016-09-07 13 views
-3

データベースが作成され、同じトランザクション内で削除されたデータベーストランザクションがある場合、それは挿入としてカウントされますか?レコードが挿入され、同じレコードが同じトランザクションで削除された場合、そのレコードは挿入としてカウントされますか?

ありがとうございます!

+0

*データベースが作成され削除されました* - >あなたは*レコード*の権利を意味しますか? – TheLostMind

+0

誰が何をしているのですか?より多くの文脈がなければ、あなたが本当に求めていることを誰もが推測することは非常に難しいでしょう。 –

+0

ddlコール(作成)はトランザクションを中断します。自動コミット – Drew

答えて

1

確かに、それはあなたがレコードを挿入しようとすると本当に反映する自動増分フィールドを持っているので、挿入されました。私はあなたの目的がこの質問で本当に分かっていませんが。

1

行が挿入されていて、あなたの質問で削除されたとします。

INNODBで起こったのと同じことが起こったのですが、そうです。

は下記を参照:

create table foo 
( id int auto_increment primary key, 
    thing varchar(20) not null 
)ENGINE=INNODB; 

start transaction; 
insert foo(thing) values ('frog'); 
commit; 

start transaction; 
insert foo(thing) values ('frog2'); 
-- Point-in-time A 
rollback; 

start transaction; 
insert foo(thing) values ('frog3'); 
commit; 

select * from foo; 
+----+-------+ 
| id | thing | 
+----+-------+ 
| 1 | frog | 
| 3 | frog3 | 
+----+-------+ 

欠失またはrollback範囲は、次に予約された除去が起こっ手段のInnoDBギャップ異常を示しています。言い換えれば、AUTO_INCREMENTは予約され、スロットされ、次にロールバックされる(または削除された)。

上記のポイントインタイムAだけでなく、その時点で設定されているTransaction Isolation Levelsに応じて、システム内の他のユーザーはfrog2の行を見ることさえできます。それは次の呼び出しでロールバックされました。

さまざまなinnodb gap-anomolyの問題について、私のHereという簡略化された回答を参照してください。挿入中に外部キーエラーなどのギャップのケースを作成しやすい多くの場合があります。

関連する問題