MySQL が UNIQUE を使用して重複のないデータ挿入を実現する方法の詳細な紹介

黄舟
リリース: 2017-05-28 09:58:10
オリジナル
2088 人が閲覧しました

一意の列が UNIQUE キーに重複する値を含むレコードを挿入する場合、MySQLこの状況を処理する方法を制御できます。IGNORE キーワードまたは ON DUPLICATE KEY UPDATE 句を使用して、INSERT をスキップしたり、Operate を中断したり、古いレコードを新しい値に更新します。

SQL UNIQUE 制約

UNIQUE 制約は、データベース テーブル内の各レコードを一意に識別します。
UNIQUE 制約と PRIMARY KEY 制約は両方とも、列または列セットの一意性を保証します。
PRIMARY KEY には UNIQUE 制約が自動的に定義されています。

テーブルごとに複数の UNIQUE 制約を持つことができますが、テーブルごとに持つことができる PRIMARY KEY 制約は 1 つだけであることに注意してください。

次の SQL は、「Persons」テーブルの作成時に「Id_P」列に UNIQUE 制約を作成します:

CREATE TABLE Persons
(
  Id_P int NOT NULL,
  LastName varchar(255) NOT NULL,
  FirstName varchar(255),
  Address varchar(255),
  City varchar(255),
  UNIQUE (Id_P)
)
ログイン後にコピー

UNIQUE 制約に名前を付け、複数の列に UNIQUE 制約を定義する必要がある場合は、次の SQL を使用してください。構文:

CREATE TABLE Persons
(
  Id_P int NOT NULL,
  LastName varchar(255) NOT NULL,
  FirstName varchar(255),
  Address varchar(255),
  City varchar(255),
  CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
)
ログイン後にコピー

テーブルの作成後、「Id_P」列に UNIQUE 制約を作成する必要がある場合は、次の SQL を使用してください:

ALTER TABLE Persons ADD UNIQUE (Id_P)
ログイン後にコピー

UNIQUE 制約に名前を付け、複数の UNIQUE 制約を定義する必要がある場合列を指定するには、次の SQL 構文を使用してください:

ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
ログイン後にコピー

UNIQUE 制約を取り消すには、次の SQL を使用してください:

ALTER TABLE Persons DROP INDEX uc_PersonID
ログイン後にコピー

このようにして、MySQL は、重複レコードが挿入されるたびに重複エントリ value1-value2 を要求します キーuni_que。もちろん、無視を追加できます
重複レコードがないことを確認したので、レコードが存在しない場合は挿入を開始し、存在する場合は更新を開始する必要があります

INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...) ON DUPLICATE KEY UPDATE field1='value1', field2='value2', field3='value3', ...
ログイン後にコピー

これステートメントは、そのようなレコードが存在しない場合は、

INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...)
ログイン後にコピー

この段落を実行します。レコードが存在する場合は、

UPDATE field1='value1', field2='value2', field3='value3', ...
ログイン後にコピー
を実行します。

以上がMySQL が UNIQUE を使用して重複のないデータ挿入を実現する方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート