一意の列が 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 サイトの他の関連記事を参照してください。