oraclのcreate sequenceのような機能はmysqlにありますでしょうか?
残念ながらありません。
そもそもMySQLにはシーケンスオブジェクトがありません。
無い場合はどのように実装すればよろしいでしょうか?
まずは、要件としてAUTO_INCREMENT属性(公式ドキュメント)が使用できないかご検討ください。次に記載する方法よりもパフォーマンスが良いです。
もしAUTO_INCREMENT属性を使用できないのであれば(テーブル間でIDを共有したい等)、採番用のテーブルを作成し、そこからシーケンス番号を取得する方法があります。
実装方法は下記を参考にして下さい。
1.まずは、採番専用のテーブルを作成し初期値を指定する
SQL
1CREATE TABLE `sequence` (
2 `id` INT UNSIGNED NOT NULL
3) ENGINE = InnoDB;
4
5-- 初期値の指定
6INSERT INTO `sequence` VALUES(0);
2.次に、シーケンス番号を取得する
SQL
1-- シーケンス番号をインクリメント
2UPDATE `sequence` SET `id` = LAST_INSERT_ID(`id` + 1);
3
4-- インクリメントしたシーケンス番号を取得
5SELECT LAST_INSERT_ID();
LAST_INSERT_IDの詳細については公式ドキュメントをご参照ください。
以上です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/26 01:45
2016/01/27 00:54
2016/01/27 03:54