同じテーブルに複数のプロセスを書き込んでいる場合、インクリメントは間違いなく悪いです-衝突が発生することになります。
私たちが話しているのはMySQLなので、最も簡単に使用できるのはidentity
です。 。 Hibernateマッピングの場合:
<generator class="identity"/>
MySQLスクリプトの場合:
CREATE TABLE IF NOT EXISTS `my_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`data1` int(11) NOT NULL,
`data2` int(11) NOT NULL,
`timestamp` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
既存のテーブルを変更するには:
ALTER TABLE `my_table`
CHANGE COLUMN `id` `id` int(11) NOT NULL AUTO_INCREMENT=$NEW_VALUE$;
ここで、$ NEW_VALUE $は、シーケンスが1にリセットされないように、次に使用可能なIDに置き換える必要があります。