• 售前

  • 售后

热门帖子
入门百科

MySQL使用UNIQUE实现数据不重复插入

[复制链接]
123457549 显示全部楼层 发表于 2021-10-25 19:20:51 |阅读模式 打印 上一主题 下一主题
SQL UNIQUE 束缚

UNIQUE 束缚唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 束缚均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动界说的 UNIQUE 束缚。

请注意,每个表可以有多个 UNIQUE 束缚,但是每个表只能有一个 PRIMARY KEY 束缚。

下面的 SQL 在 “Persons” 表创建时在 “Id_P” 列创建 UNIQUE 束缚:
  1. CREATE TABLE Persons
  2. (
  3.   Id_P int NOT NULL,
  4.   LastName varchar(255) NOT NULL,
  5.   FirstName varchar(255),
  6.   Address varchar(255),
  7.   City varchar(255),
  8.   UNIQUE (Id_P)
  9. )
复制代码
假如必要定名 UNIQUE 束缚,以及为多个列界说 UNIQUE 束缚,请利用下面的 SQL 语法:
  1. CREATE TABLE Persons
  2. (
  3.   Id_P int NOT NULL,
  4.   LastName varchar(255) NOT NULL,
  5.   FirstName varchar(255),
  6.   Address varchar(255),
  7.   City varchar(255),
  8.   CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
  9. )
复制代码
当表已被创建时,如需在 “Id_P” 列创建 UNIQUE 束缚,请利用下列 SQL:
  1. ALTER TABLE Persons ADD UNIQUE (Id_P)
复制代码

如需定名 UNIQUE 束缚,并界说多个列的 UNIQUE 束缚,请利用下面的 SQL 语法:
  1. ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)<br />
复制代码
如需打消 UNIQUE 束缚,请利用下面的 SQL:
  1. ALTER TABLE Persons DROP INDEX uc_PersonID
复制代码

这样每次插入重复记录时MySQL就会提示Duplicate entry value1-value2 for key uni_que,当然你可以在insert的时间加入ignore来忽略掉
现在保证了无重复记录后,我们要开始记录不存在则插入,存在则更新操纵
  1. INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...) ON DUPLICATE KEY UPDATE field1='value1', field2='value2', field3='value3', ...
复制代码

这个语句的意思是,插入值,假如没有该记录执行
  1. INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...)
复制代码

这一段,假如存在该记录,那么执行
  1. UPDATE field1='value1', field2='value2', field3='value3', ...
复制代码

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作