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の意味論、書き方、ベストプラクティス

推薦する

HTML 要素 noscript の使用の紹介

noscript の定義と使用法noscript 要素は、スクリプトが実行されない場合の代替コンテン...

40以上の美しいWebフォームデザイン例

Web フォームは、訪問者と Web サイト所有者間の主要なコミュニケーション チャネルです。フィー...

モバイルインターネット時代: レスポンシブウェブデザインが一般的なトレンドに

今はモバイルインターネットが急速に発展している時代です。スマートフォンやタブレットはますます普及し、...

LeetCode の SQL 実装 (183. 注文をしたことがない顧客)

[LeetCode] 183.注文しない顧客Web サイトに、Customers テーブルと Or...

MySQL共通インデックスとユニークインデックスの選択に関する詳細な分析

各人が固有の携帯電話番号で登録し、ビジネス コードによって重複する携帯電話番号が 2 つ書き込まれな...

JavaScript データ プロキシとイベントの詳細な分析

目次データブローカーとイベントObject.defineProperty メソッドのレビューデータブ...

MySQL インフラストラクチャ チュートリアル: クエリ ステートメント実行プロセスの詳細な説明

序文私は以前から、SQL 文がどのように実行され、どのような順序で実行されるのかを知りたいと思ってい...

ページに間隔を空けてグリッドレイアウトを完璧に実装する方法

典型的なレイアウト例上の写真のように、正方形の真ん中に一定の隙間があり、その隙間は固定されています。...

DockerにFastDFSをインストールする方法

画像をプルする docker pull season/fastdfs:1.2トラッカーを開始 doc...

CocosCreatorを使ってシューティングゲームを作る方法

製造手順を分析します。 1. リソースを準備してシーンを構築するオンラインでリソースを探すか、私のリ...

JS for ループで setTimeout を使用する 4 つのソリューション

目次概要解決策 1: クロージャ解決策2: 構造を分割する解決策3:解決策4: setTimeout...

CocosCreator ユニバーサルフレームワークデザインネットワーク

目次序文Websocketの使用Websocketオブジェクトの構築Websocket ステータスW...

スーパーバイザーによるDockerfileのマルチサービスイメージパッケージ操作

Dockerfileの作成yumソースを設定する cd /tmp/docker vim Docker...

HTML チュートリアル: よく使われる HTML タグのコレクション (6)

導入された HTML タグは、必ずしも XHTML 仕様に完全に準拠しているわけではありません。実際...

Win10でIIS10を構成し、ASPプログラムのデバッグをサポートする手順

マイクロソフトIIS (Internet Information Server) は、Microso...