mysqlは複数の主キーを設定する操作を実装します

mysqlは複数の主キーを設定する操作を実装します

ユーザーテーブル、ID番号は一意である必要があります、携帯電話番号、電子メールアドレスは一意である必要があります

実装:

テーブル構造を変更する必要はありません。主キーIDとインデックスの実装

図に示すように、インデックス タイプを [一意] に設定して、唯一のフィールドを選択し、名前を付けます。インデックス方式は btree です。はい〜

補足: MySQLは複数テーブルの主キーの重複を防止します

同じデータベース内に 2 つのテーブルがあり、フィールドは同じですが、保存されているデータを区別する必要があります。ただし、主キーを繰り返すことはできません。具体的な実装は以下のとおりです。

新しいデータベースmytestを作成する

新しいユーザーテーブルと管理者テーブルを作成する

テーブル `user` を作成します (
 `user_id` INT(11) NULLではない、
 `user_name` VARCHAR(255) NOT NULL、
 `パスワード` VARCHAR(255) NOT NULL,
 `phone` VARCHAR(255) NOT NULL,
 主キー (`user_id`)
)
COMMENT = 'ユーザーテーブル'
照合='utf8_general_ci'
エンジン=InnoDB;
テーブル「admin」を作成します(
 `user_id` INT(11) NULLではない、
 `user_name` VARCHAR(255) NOT NULL、
 `パスワード` VARCHAR(255) NOT NULL,
 `phone` VARCHAR(255) NOT NULL,
 主キー (`user_id`)
)
COMMENT = '管理者テーブル'
照合='utf8_general_ci'
エンジン=InnoDB;

新しいシーケンス テーブルを作成します。

テーブル `sequence` を作成します (
 `seq_name` VARCHAR(50) NOT NULL、
 `current_val` INT(11) NOT NULL、
 `increment_val` INT(11) NOT NULL デフォルト '1',
 主キー (`seq_name`)
)
COMMENT = 'シーケンスリスト'
照合='utf8_general_ci'
エンジン=InnoDB;

新しいシーケンスを追加します。

シーケンスに VALUES ('seq_test', '0', '1') を挿入します。

シーケンスの現在の値を取得する currval 関数を作成します。

区切り文字 #
関数currval(v_seq_name VARCHAR(50))を作成します。 
整数(11)を返す 
始める
 整数値を宣言します。
 値を 0 に設定します。
 seq_name = v_seq_name であるシーケンスから、current_val を値に選択します。
 戻り値;
終わり;

現在の値を照会します:

currval('seq_test') を選択します。

シーケンスの次の値を取得するには、 nextval 関数を作成します。

区切り文字 #
関数 nextval (v_seq_name VARCHAR(50)) を作成し、整数(11) を返します。 
始める
 更新シーケンス set current_val = current_val + increment_val where seq_name = v_seq_name;
 currval(v_seq_name) を返します。
終わり;

次の値を照会する

nextval('seq_test') を選択します。

具体的な実装:

<挿入id="addUser" パラメータタイプ="ユーザー">
  <selectKey keyProperty="userId" resultType="int" order="BEFORE">
   nextval('seq_test') を選択します。
  </selectKey>
  ユーザーに(user_id,user_name,password,phone)の値を挿入する
  (#{userId}、#{userName、jdbcType=VARCHAR}、#{password、jdbcType=VARCHAR}、#{phone、jdbcType=VARCHAR})
 </挿入>
<挿入id="addAdmin" パラメータタイプ="Admin">
  <selectKey keyProperty="userId" resultType="int" order="BEFORE">
   nextval('seq_test') を選択します。
  </selectKey>
  admin(user_id,user_name,password,phone) の値を挿入します
  (#{userId}、#{userName、jdbcType=VARCHAR}、#{password、jdbcType=VARCHAR}、#{phone、jdbcType=VARCHAR})
 </挿入>

最終的な実装:

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • MySQL の主キーとその自動増分の設定に関するチュートリアル
  • Mysql、SqlServer、Oracle の主キーの自動拡張設定の詳細な説明
  • MySQL でフィールドを作成し、主キーを設定する PHP コード

<<:  Tomcat の設定と Eclipse での起動方法

>>:  W3Cチュートリアル(1):W3Cを理解する

推薦する

geo モジュールを使用して Nginx でホワイトリストを設定する例

元の構成: http { ...... limit_conn_zone $binary_remote...

さまざまなマウスの形状を表現する方法

<a href = "http://" style = "cur...

Vue モバイル プロジェクトでページ キャッシュを実装する方法のサンプル コード

背景モバイル デバイスでは、ページ ジャンプ間のキャッシュが必須要件です。例: ホームページ =&g...

Vueコンポーネントの基本のまとめ

コンポーネントの基本1 コンポーネントの再利用コンポーネントは再利用可能な Vue インスタンスです...

Linux ifconfig コマンドの使用

1. コマンドの紹介ifconfig (ネットワーク インターフェイスを構成する) コマンドは、ネッ...

resizeを使用して画像切り替えプレビュー機能を実装する方法

要点CSS resize プロパティを使用すると、要素のサイズ変更可能性を制御できます。サイズ変更を...

MySQL 5.7.20\5.7.21 無料インストール版のインストールと設定のチュートリアル

参考までに、mysql 5.7.20 / 5.7.21 をダウンロード、インストール、構成します。具...

Vue の新しいおもちゃ VueUse の具体的な使い方

目次序文VueUseとは使いやすいおなじみの手ぶれ補正やスロットル機能もありますグローバル状態を共有...

Reactでコンポーネントロジックを共有する3つの方法

簡単に説明すると、これら 3 つの方法は、レンダリング プロップ、高階コンポーネント、カスタム フッ...

初心者でもjsのtypeofとinstanceofの違いを理解できます

目次1. 型2. インスタンス3. 違い1. 型typeof 演算子は、評価されていないオペランドの...

nginxアクセス制御の実装例

高性能で軽量なウェブサービスソフトウェアであるNginxについて高い安定性 システムリソースの消費量...

VMWare仮想マシンのcentosの時間が現地時間と矛盾する問題を解決する

VM Ware 仮想マシン CentOS の時刻は、次の図に示すように、現地時間と一致しません。おそ...

HTMLテキスト内のすべてのタグを置き換える方法

(?i) は大文字と小文字を区別しないことを意味します。大文字と小文字をすべて置き換えます。 htm...

CSSはカラフルでスマートな影の効果を実現します

背景前景要素から特定の色を継承する影の効果を作成する方法を知りたいと思ったことはありませんか?方法に...

MySQL 完全崩壊: クエリフィルタ条件の詳細な説明

概要実際のビジネス シナリオ アプリケーションでは、ビジネス条件に基づいて対象データを取得およびフィ...