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

推薦する

Vue3デスクトップアプリケーションの構築方法

この記事では、Vite を使用して Vue 3 デスクトップ プロジェクトを開発する方法について説明...

FTP環境設定ソリューション(vsftpd)の詳細な説明

1. vsftpdコンポーネントをインストールするインストールコマンド: [root@ink4t ~...

Dockerコンテナを外部IPとポートにバインドする方法

Docker を使用すると、外部からコンテナにアクセスしたり、コンテナを相互接続したりすることで、ネ...

要素 el-button ボタンコンポーネントの使用の詳細な説明

1. 背景ボタンは非常によく使われており、Element のボタン機能は非常に包括的です。この記事で...

MySQL 時間差関数 (TIMESTAMPDIFF、DATEDIFF)、日付変換計算関数 (date_add、day、date_format、str_to_date)

1. 時間差関数(TIMESTAMPDIFF、DATEDIFF) MySQLを使用して時間差を計算...

JSパッケージオブジェクトに関する簡単な説明

目次概要意味インスタンスメソッドプリミティブ型とインスタンスオブジェクト間の自動変換カスタムメソッド...

携帯電話番号の真ん中の4桁を隠すMySQL SQL文の方法

最初のクエリ テーブル構造 (sys_users): sys_users から * を選択します。最...

非表示のフォームテキストを表示するJavaScript

この記事では、フォームの隠しテキストを表示するためのJavaScriptの具体的なコードを参考までに...

Elasticsearchツールcerebroのインストールと使用チュートリアル

Cerebro は、Elasticsearch バージョン 5.x より前の Elasticsear...

MySQLにおけるrow_numberの実装プロセス

1. 背景一般的に、データ ウェアハウス環境では、row_number 関数を使用して特定のディメン...

MySQLのインデックスシステムがB+ツリーを使用する理由の分析

目次1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 3. インデック...

パーソナライズされた検索エンジンを使用して、必要なパーソナライズされた情報を検索します

現在、多くの人がインターネット上で生活しており、インターネットで情報を検索することは日常的な作業とな...

Docker のタイムゾーンの問題とデータ移行の問題

最新のソリューション: -v /usr/share/zoneinfo/Asia/Shanghai:/...

js で継承を実装する 5 つの方法

コンストラクタの借用この手法の基本的な考え方は単純です。サブタイプ コンストラクター内からスーパータ...

Docker Composeでコンテナ管理の問題を解決する

Docker の設計では、コンテナは 1 つのアプリケーションのみを実行します。しかし、現在のアプリ...