0

リビジョン管理システムを作成したいのですが、リビジョン番号 1 の新しいエントリのクエリは次のようになります。

ID とリビジョン番号の組み合わせが主キーです。

insert into contentfile (id, name, revision, active) 
values ((select max(id) +1 from contentfile), 'name', 1, 1)

これは十分に原子的でしょうか、それともサブクエリで生成された ID がこのクエリの別の呼び出しによって同時に選択される可能性はありますか?

前もって感謝します。

4

1 に答える 1

1

すでに存在するものを再発明しようとしないでください。自動インクリメント オプションをidフィールドに追加してテーブルを変更し、次のようにレコードを挿入します。

INSERT INTO contentfile(name, revision, active) VALUES('name', 1, 1);

ID は MySQL サーバーによって自動的に増分されます。すべての ID 値は一意になります。

于 2012-08-14T10:45:51.770 に答える