MySQLはOracleのようなシーケンスを実装している Oracle は通常、主キー フィールドを処理するためにシーケンスを使用しますが、MySQL は同様の目的を達成するために増分を提供します。 しかし、実際に使用してみると、MySQL の自動インクリメントには多くの欠点があることがわかります。ステップ サイズ、開始インデックス、ループなどを制御することは不可能であり、データベースを移行する必要がある場合、主キーも大きな問題になります。 この記事では、アイデアとコードに重点を置いて、Oracle シーケンスをシミュレートするためのソリューションを記録します。 Oracle シーケンスの使用は、.nextval および .currval 疑似列を使用するだけです。基本的な考え方は次のとおりです。 1. シーケンス名と値を格納するための新しいテーブルを MySQL に作成します。 2. シーケンス テーブルの値を取得する関数を作成します。 詳細は以下の通りです。 テーブル構造は次のとおりです。 シーケンスが存在する場合はテーブルを削除します。 テーブルシーケンスを作成する( seq_name VARCHAR(50) NOT NULL, -- シーケンス名 current_val INT NOT NULL, -- 現在の値 increment_val INT NOT NULL DEFAULT 1, -- ステップ長(スパン) 主キー (seq_name) ); 通貨のシミュレーションの実装 関数currval(v_seq_name VARCHAR(50))を作成します。 整数を返す 始める 整数値を宣言します。 値を 0 に設定します。 現在の値を値に選択する シーケンスから ここで、seq_name = v_seq_name; 戻り値; 終わり; 関数の使用法: nextvalのシミュレーションスキームの実装 関数 nextval (v_seq_name VARCHAR(50)) を作成します。 整数を返す 始める 更新シーケンス current_val = current_val + increment_val を設定します。 ここで、seq_name = v_seq_name; currval(v_seq_name) を返します。 終わり; この関数は次のように使用されます: 設定値を増やす機能 関数setval(v_seq_name VARCHAR(50), v_new_val INTEGER)を作成します。 整数を返す 始める 更新シーケンス current_val = v_new_val を設定します ここで、seq_name = v_seq_name; currval(seq_name) を返します。 同様に、ステップ サイズ操作のための関数を追加することもできますが、ここでは説明しません。 構文に注意してください。データベースフィールドは次のように対応している必要があります。 bvboms を使用します。 区切り文字 $$ 関数setval(v_seq_name VARCHAR(50), v_new_val INTEGER)を作成します。 整数を返す 始める 更新シーケンス current_val = v_new_val を設定します ここで、seq_name = v_seq_name; currval(seq_name) を返します。 終了 $$ 区切り文字 $$ 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: Docker ベースの MySQL マスタースレーブ レプリケーションを実装する方法
>>: シンプルなタブバー切り替えケースを実現するJavaScript
目次序文コンポーネントの紹介クラスコンポーネントの作成状態についてレンダリングについて関数コンポーネ...
目次序文コンテナ間の通信を容易にするためのブリッジネットワークを作成するCentOS7イメージを使用...
目次環境条件エラーが発生しました回避策1. mysql dockerにログインする2. ルートパスワ...
vue3 での computed の使い方。vue3 は vue2 のオプション API と互換性が...
多くのウェブサイトのソースコードを確認すると、多くのコメントが見つかります。特に、ソース文書にコメン...
目次序文プロジェクトを初期化するデザインコードの実装オンデマンドロードオーディオを再生録音長押しイベ...
最近、スタック コンテキストについて学習しています。学習の過程で、z-index が 0 の場合と ...
この記事では、Centos7.3でのmysql5.7.18のインストールと初期パスワードの変更につい...
この記事の例では、タイプライター効果を実現するためのjsの具体的なコードを参考までに共有しています。...
この記事ではMySQL 8.0.24バージョンのインストールと設定方法を記録し、皆さんと共有しますM...
1. 時刻の書式設定とその他の方法moment.jsライブラリファイルの使用をお勧めします2. テン...
目次502 不正なゲートウェイ エラーの発生1. 502 不正なゲートウェイ エラーとは何ですか? ...
シンプルな Linux 推測ゲームのソースコードゲームのルール:数字当てゲームは通常 2 人でプレイ...
SQL はメイントランクです。なぜ私はこのように理解するのでしょうか。技術的な観点からリレーショナル...
CentOS 7にPostgreSQL 11をインストールする PostgreSQL: 世界で最も先...