MySQL で自動インクリメントシーケンスを実装するためのサンプルコード

MySQL で自動インクリメントシーケンスを実装するためのサンプルコード

1. シーケンステーブルを作成する

テーブル `sequence` を作成します (
 `name` varchar(50) COLLATE utf8_bin NOT NULL COMMENT 'シーケンス名',
 `current_value` int(11) NOT NULL COMMENT 'シーケンスの現在の値',
 `increment` int(11) NOT NULL DEFAULT '1' COMMENT 'シーケンス自動インクリメント',
 主キー (`name`)
) エンジン=InnoDB デフォルト文字セット=utf8 COLLATE=utf8_bin;

2. 作成 – 現在の値を取得する関数

存在する場合は関数を削除します currval; 
区切り文字 $ 
CREATE FUNCTION currval (seq_name VARCHAR(50)) 
   整数を返す
   言語 SQL 
   決定論的 
   SQLを含む 
   SQL セキュリティ定義者 
   コメント ''
始める
   値をINTEGERとして宣言します。 
   値 = 0 を設定します。 
   現在の値を値に選択する 
     FROMシーケンス
     ここで、name = seq_name; 
   戻り値; 
終わり
$ 
区切り文字 ; 

3. 作成 – 次の値を取得する関数

nextval が存在する場合は関数を削除します。 
区切り文字 $ 
CREATE FUNCTION nextval (seq_name VARCHAR(50)) 
   整数を返す 
   言語 SQL 
   決定論的 
   SQLを含む 
   SQL セキュリティ定義者 
   コメント '' 
始める 
   更新シーケンス 
     SET current_value = 現在の値 + 増分 
     ここで、name = seq_name; 
   RETURN currval(seq_name); 
終わり 
$ 
区切り文字 ; 

4. 作成 – 現在の値を更新する関数

setval が存在する場合は関数を削除します。 
区切り文字 $ 
CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER) 
   整数を返す 
   言語 SQL 
   決定論的 
   SQLを含む 
   SQL セキュリティ定義者 
   コメント '' 
始める 
   更新シーケンス 
     SET 現在の値 = 値 
     ここで、name = seq_name; 
   RETURN currval(seq_name); 
終わり 
$ 
区切り文字 ; 

5. SQLを実行するためのインスタンスの追加をテストする

INSERT INTO シーケンス VALUES ('testSeq', 0, 1);-- シーケンス名と初期値、および自動増分率を追加しますSELECT SETVAL('testSeq', 10);-- 指定されたシーケンスの初期値を設定しますSELECT CURRVAL('testSeq');-- 指定されたシーケンスの現在の値を照会しますSELECT NEXTVAL('testSeq');-- 指定されたシーケンスの次の値を照会します

これで、MySQL で自動インクリメント シーケンスを実装するためのサンプル コードに関するこの記事は終了です。MySQL の自動インクリメント シーケンスの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLの自動増分IDの開始値を変更する方法
  • MySQL の自動増分 ID を 0 に戻す方法
  • MySQL の AUTO_INCREMENT 列の初期値をリセットする方法
  • 最後に挿入された MySQL レコードの自動増分 ID 値を取得する 3 つの Java メソッド
  • MySQLのauto_increment関数の関連設定と問題
  • MySQL rownumber SQL を使用して自己増分シーケンス番号を生成する方法の紹介
  • Mysqlの自動増分IDについて知らないことがあるかもしれません
  • MySQLテーブルにおける自己増分IDの問題の解決
  • MySQL 自動インクリメント ID のオーバーサイズ問題のトラブルシューティングと解決策
  • MySQL で自動増分主キーの型を int から char に変更する例
  • MySQL にレコードを挿入するときに自動増分主キーを取得するために Java の MyBatis フレームワークを使用する

<<:  CSS transform-originプロパティを理解する

>>:  リンクAの意味論、書き方、ベストプラクティス

推薦する

MySQL 5.7.18 Green Edition のダウンロードとインストールのチュートリアル

この記事では、MySQL 5.7.18のグリーンバージョンをダウンロードしてインストールする詳細な手...

Vue で動的なスタイルを実現するためのさまざまな方法のまとめ

目次1. 三項演算子の判定2. 動的に設定されるクラス3. 方法判定4. 配列バインディング5. e...

Web デザイン ヘルプ: Web フォント サイズ データ リファレンス

<br />内容はインターネットから転載したものです。どこから見つけたのか忘れてしまいま...

mysql の存在する例と存在しない例の詳細な説明

mysql の存在する例と存在しない例の詳細な説明テーブルA |列1 | 列1 | 列3 |テーブル...

MySQL の count 関数の正しい使い方の詳細な説明

1. 説明MySQLでは、テーブル内の行の総数を取得する必要がある場合、通常は次の文を使用します。 ...

フレックスレイアウトは、1行あたりの固定行数と適応レイアウトを実現します。

この記事では、1行あたりの固定行数+アダプティブレイアウトを実現するフレックスレイアウトを紹介し、皆...

JS を使用して要素がビューポート内にあるかどうかを確認する方法

序文要素がビューポート内にあるかどうかを監視する2つの方法を共有する1. 位置計算Element.g...

トランザクション分離レベルのMySQLケース分析

目次1. 理論シリアル化可能繰り返し読み取りコミットされた読み取りコミットされていない読み取り2. ...

Nginx バージョンのスムーズなアップグレードソリューションの詳細説明

目次背景: Nginx スムーズ アップグレード ソリューションフォールバック手順要約する背景:負荷...

Vue プロジェクトで Baidu Map API を使用する方法

目次1. Baidu Map Open Platformにアカウントを登録してログインする2. 必要...

MySQLのページング制限のパフォーマンス問題についての簡単な説明

MySQL ページング クエリは通常、制限を通じて実装されます。 limit は 1 つまたは 2 ...

ドロップダウンメニューを表示または非表示にするJavaScript

この記事では、ドロップダウンメニューを表示および非表示にするJavaScriptの具体的なコードを参...

MySQL マスタースレーブ同期における server-id の例の詳細な説明

序文MySQL クラスターを構築する場合、当然のことながら、データの一貫性を確保するために、データベ...

OpenLayers 3 のベクターマップソースの読み込みの問題を解決する

1. ベクターマップベクター グラフィックスは直線と曲線を使用してグラフィックスを表します。これらの...