MySQL如何使用UNIQUE來實現資料不重複插入的詳細介紹

黄舟
發布: 2017-05-28 09:58:10
原創
2089 人瀏覽過

當unique列在一個UNIQUE鍵上插入包含重複值的記錄時,我們可以控制MySQL如何處理這種情況:使用IGNORE關鍵字或ON DUPLICATE KEY UP DATE子句跳過INSERT、中斷作業或更新舊記錄為新值。

SQL UNIQUE 限制

#UNIQUE 約束唯一標識資料庫表中的每筆記錄。
UNIQUE 和 PRIMARY KEY 約束皆為列或列集合提供了唯一性的保證。
PRIMARY KEY 擁有自動定義的 UNIQUE 限制。

請注意,每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。

下面的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就會提示Duplicate entry value1-value2 for key uni_que,當然你可以在insert的時候加入ignore來忽略掉
現在保證了無重複記錄後,我們要開始記錄不存在則插入,存在則更新操作

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板