MySQL のマルチバージョン同時実行制御 この記事では、多くの非表示列のうち、行識別子
簡単に言えば、テーブルに主キーまたは空でない一意のインデックスがあり、それが 1 つの整数列のみで構成されている場合は、 ドキュメントに記載されているキーワード(主キー、一意のインデックス、空でない、単一の列、数値型)に特に注意してください。次に、これらの観点から始めて、謎の隠しフィールド 1. 主キーが存在するまず、主キーが設定されていて数値型である場合を見てみましょう。次のステートメントを使用してテーブルを作成します。 テーブル `table1` を作成します ( `id` bigint(20) NOT NULL 主キー、 `name` varchar(32) デフォルト NULL )ENGINE=InnoDB; 3 つのテスト データを挿入した後、次のクエリ ステートメントを実行し、 テーブル1から*,_rowidを選択 実行結果を確認すると、 主キーが設定され、主キー フィールドが数値型の場合、 前述の文書内のいくつかのキーワードを確認し、個別に分析してみましょう。主キーは非 NULL フィールドである必要があるため、主キーが非数値フィールドである場合を見てみましょう。テーブルは次のように作成されます。 テーブル `table2` を作成します ( `id` varchar(20) NOT NULL 主キー、 `name` varchar(32) デフォルト NULL )ENGINE=InnoDB; 上記と同じクエリを 2. 主キーはないが、一意のインデックスが存在する上記の 2 種類の主キーをテストした後、テーブルに主キーが存在しないが、一意のインデックスが存在する状況を見てみましょう。まず、空でない一意のインデックスが数値フィールドに追加される場合をテストし、次のようにテーブルを作成します。 テーブル `table3` を作成します ( `id` bigint(20) NOT NULL ユニークキー、 `名前` varchar(32) )ENGINE=InnoDB; クエリは正常に実行され、 一意のインデックスと主キーの違いは、一意のインデックスが配置されているフィールドが テーブル `table4` を作成します ( `id` bigint(20) ユニークキー、 `名前` varchar(32) )ENGINE=InnoDB; クエリ ステートメントを実行します。この場合、 主キーと同様に、一意のインデックスが数値以外のフィールドに追加される場合をテストします。次に、テーブルを作成するときに、文字型フィールドに一意のインデックスが追加され、NOT NULL 制約が追加されます。 テーブル `table5` を作成します ( `id` ビッグイント(20)、 `name` varchar(32) NOT NULL 一意キー )ENGINE=InnoDB; 同じクエリでは 上記の 3 つの状況のテスト結果に基づいて、主キーが存在しないが一意のインデックスが存在する場合、一意のインデックスが数値フィールドに追加され、フィールドに null 以外の制約が追加され、 3. 共同主キーまたは共同ユニークインデックスがある上記のテストでは、主キーまたは一意のインデックスを単一の列に適用しました。複合主キーまたは複合一意のインデックスを使用するとどうなるでしょうか?まずは公式ドキュメントの手順を見てみましょう。
簡単に言えば、主キーが存在し、それが数値型の列 1 つだけで構成されている場合、 この説明に基づいて、共同主キーの状況をテストしてみましょう。次のテーブルは、数値型フィールドの 2 つの列を共同主キーとして作成されています。 テーブル `table6` を作成します ( `id` bigint(20) NULLではない、 `no` bigint(20) NOT NULL、 `名前` varchar(32), 主キー(`id`,`no`) )ENGINE=InnoDB; 同様に、この理論は一意のインデックスにも適用できます。空でない一意のインデックスが単一の列で構成されていない場合、 4. 複数の一意のインデックスがあるMySQL では、各テーブルには主キーを 1 つしか持てませんが、一意のインデックスを複数持つことができます。したがって、ルールを同時に満たす一意のインデックスが複数ある場合、
簡単に言えば、テーブル内の最初の空でない一意のインデックスが 1 つの整数型フィールドのみで構成されている場合、 次の表で、ルールを満たす 2 つの一意のインデックスを作成します。 テーブル `table8_2` を作成します ( `id` bigint(20) NOT NULL, `no` bigint(20) NOT NULL、 `名前` varchar(32), ユニークキー(いいえ) ユニークキー(id) )ENGINE=InnoDB; クエリ ステートメントを実行した結果を見てみましょう。 したがって、テーブルに作成された最初の一意のインデックスが テーブル `table9` を作成します ( `id` bigint(20) NULLではない、 `no` bigint(20) NOT NULL、 `名前` varchar(32), ユニークキー `index1`(`id`,`no`), ユニークキー `index2`(`id`) )ENGINE=InnoDB; テーブルをクエリすると、単一列の空でない一意のインデックスがあるにもかかわらず、順番に選択された最初の列が要件を満たしていないため、 上記の一意のインデックスを作成するためのステートメントの順序を逆にすると、 5. 主キーとユニークインデックスが同時に存在する上記の例から、ユニーク インデックスの定義順序によって、 次のステートメントを使用して 2 つのテーブルを作成します。唯一の違いは、主キーと一意のインデックスが作成される順序です。 テーブル `table11` を作成します ( `id` bigint(20) NULLではない、 `no` bigint(20) NOT NULL、 主キー(id)、 ユニークキー(いいえ) )ENGINE=InnoDB; テーブル `table12` を作成します ( `id` bigint(20) NULLではない、 `no` bigint(20) NOT NULL、 ユニークキー(id)、 主キー (いいえ) )ENGINE=InnoDB; 実行結果を表示します: 修飾された主キーと一意のインデックスの両方が存在する場合、作成順序に関係なく、 6. 要件を満たす主キーまたは一意のインデックスがない上記では、 実際、デフォルトの主キーがない場合、 テーブル `table10` を作成します ( `id` ビッグイント(20)、 `名前` varchar(32) )ENGINE=InnoDB; まず、mysql プロセスの ps -ef | grep mysqld ご覧のとおり、mysql プロセスの 始める前に、いくつか準備が必要です。 次に、 gdb -p 2068 -ex 'p dict_sys->row_id=1' -バッチ コマンド実行結果: 空のテーブルに 3 行のデータを挿入します。 テーブル10に値(100000001、'Hydra')を挿入します。 テーブル10に値(100000002、'トランク')を挿入します。 テーブル10に値(100000003、'スーザン')を挿入します。 テーブル内のデータを表示します。対応する 次に、 gdb -p 2068 -ex 'p dict_sys->row_id=281474976710656' -バッチ コマンド実行結果: テーブルにさらに 3 つのレコードを挿入します。 テーブル10に値(100000004、'キング')を挿入します。 テーブル10に値(100000005、'Queen')を挿入します。 テーブル10に値(100000006、'Jack')を挿入します。 テーブル内のすべてのデータを表示すると、最初に挿入された 3 つのデータのうち 2 つが上書きされていることがわかります。 なぜデータカバレッジが発生するのでしょうか? この結果を分析してみましょう。まず、最初のデータが挿入される前は、 同じ したがって、テーブル内の主キーまたは一意のインデックスが上記の要件を満たしていない場合、
MySQL の隠し列の具体的な使用法に関するこの記事はこれで終わりです。MySQL の隠し列に関するより詳しい情報は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CSS3 フレックスレイアウトを使用して要素を均等に分散するサンプルコード
>>: thead、tfoot、tbodyを使用して表を作成します
この記事では、Baidu News Navigation Barの効果を実現するための具体的なJSコ...
この記事の例では、計算機機能を実装するためのjsの具体的なコードを参考までに共有しています。具体的な...
参考までにWeChatアプレットで書かれた簡単な計算機です。具体的な内容は次のとおりです。 jisa...
MySQL インストール パッケージをダウンロードします。mysql-8.0.11-winx64 を...
この記事の例では、ログインと登録機能を実装するためのjsの具体的なコードを参考までに共有しています。...
序文実際には、次のような問題に遭遇する可能性があります。特定のレコードの ID がわかっていて、その...
1. まず、お使いのマシンに応じて、MySQL 公式サイトから対応するデータベースをダウンロードしま...
コードをコピーコードは次のとおりです。 <html xmlns="">...
1. コマンドの紹介date コマンドは、現在の時刻または指定された時刻を指定された形式で表示するた...
目次1. ユーザーが作成したスクリプト2. 単語当てゲーム3. ネットワークカードのトラフィック監視...
目次序文1. catコマンド: 2. moreコマンド: 3. lessコマンド: 4. headコ...
目次ビジネス要件:解決策 1: vuex-persistedstate解決策2: vuex-pers...
2 列レイアウトはプロジェクトでよく使用されます。この効果を実現する方法はたくさんあります。 しかし...
最近、docker を学習していたときに、docker コンテナ内のネットワーク状態を照会するために...
XQuery は、XML ドキュメントからデータを抽出するための言語です。 XQuery は、XML...