程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL使用UNIQUE實現數據不重復插入

MySQL使用UNIQUE實現數據不重復插入

編輯:MySQL綜合教程

MySQL使用UNIQUE實現數據不重復插入。本站提示廣大學習愛好者:(MySQL使用UNIQUE實現數據不重復插入)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL使用UNIQUE實現數據不重復插入正文


MySQL使用UNIQUE實現數據不重復插入

作者:linux_c_coding_man

當unique列在一個UNIQUE鍵上插入包含重復值的記錄時,我們可以控制MySQL如何處理這種情況:使用IGNORE關鍵字或者ON DUPLICATE KEY UPDATE子句跳過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', ...

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved