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

推薦する

vue-routerのマッチングに基づいてパンくずリスト機能を実現する

この記事では主にvue-routerのmatchedをベースにしたbreadcrumb機能を紹介し、...

CSS で 2 列レイアウトを実現する N 通りの方法

1. 2 列レイアウトとは何ですか? 2 列レイアウトには、左側が固定幅で右側が適応幅のレイアウトと...

js キャンバスはランダムなパーティクル効果を実現します

この記事の例では、参考のためにjsキャンバスランダムパーティクルエフェクトの具体的なコードを共有して...

Vue3.0 で Vuex 状態管理を開始する方法をすぐに習得します

Vuex は、Vue.js アプリケーション専用に開発された状態管理パターンです。集中型ストレージを...

CentOS 8 カスタム ディレクトリ インストール nginx (チュートリアルの詳細)

1. ツールとライブラリをインストールする# PCRE は、Perl 互換の正規表現ライブラリを含...

Vue h関数の使い方の詳しい説明

目次1. 理解2. 使用1. h() パラメータ2. 使い方が簡単3. カウンターケースを実装する4...

js での Object.create インスタンスの使用法の詳細な説明

1. Object.create() メソッドを使用して新しいオブジェクトを作成し、既存のオブジェク...

MySQLのスイッチングデータ保存ディレクトリの実装方法

MySQLのスイッチングデータ保存ディレクトリの実装方法今日、仕事中に、mysql が保存されている...

docker run 起動パラメータ コマンドを表示する方法 (推奨)

runlike を使用してコンテナの docker run 起動パラメータを表示します。 pipを...

mysql 5.7.19 最新バイナリインストール

まず、公式ウェブサイト http://dev.mysql.com/downloads/mysql/ ...

Linux は、ディレクトリが存在するかどうかを判断するために if を使用します。

Linux で if を使用してディレクトリが存在するかどうかを判断する方法方法は次のとおりです。...

SpringBoot でマイクロサービスを構築するために Docker を使用した実際の記録を分析する

それは何ですか? Spring Boot は、Spring オープンソース組織のサブプロジェクトであ...

ボタンの権限判定を実装するためのVueカスタムv-has命令

アプリケーションシナリオバックグラウンド管理システムを例にとると、各ユーザーには異なるボタン権限があ...

nginx で gzip 圧縮を実装してウェブサイトの速度を向上させる方法

目次gzip 圧縮を使用する理由は何ですか? nginxはgzipを実装するgzip処理nginx ...

MySQL 5.7 の同時レプリケーションにおける暗黙のバグの分析

序文当社の MySQL オンライン環境のほとんどはバージョン 5.7.18 を使用しています。このバ...