【问题标题】:How to don´t repeat values stored in database如何不重复存储在数据库中的值
【发布时间】:2013-10-29 02:43:06
【问题描述】:

我正在创建一个数据库 addrees,我想知道我需要在 Mysql 中设置什么以不存储重复值?

喜欢

地址 1 ("teste",1,new york,eua);

地址 2 ("teste",1,new york,eua);

如果发生这种情况,我的数据库将不会存储。

那我需要做什么?

【问题讨论】:

  • 在需要唯一的列上添加唯一键

标签: mysql database-design mysql-workbench


【解决方案1】:

要更改已经存在的表,请运行以下 MySQL 命令:

alter table yourtablename add unique index(firstcolumn, secondcolumn, thirdcolumn, fourthcolumn);

这会将唯一约束添加到指定的列。以下是在 CREATE TABLE 中指定此类约束的方法。

CREATE TABLE buyers ( 
 buyer_id INT UNSIGNED NOT NULL, 
 first_name CHAR(19) NOT NULL, 
 last_name CHAR(19) NOT NULL, 
 age SMALLINT NOT NULL, 
 post_code SMALLINT NOT NULL, 
 UNIQUE idx_flname_age (first_name,last_name,age)
);

@Ajeesh 提到的主键约束也会这样做

编辑: 根据评论中的建议,如果您想避免此唯一约束产生的错误,您有三个不错的选择:

INSERT IGNORE

INSERT...ON DUPLICATE KEY UPDATE

REPLACE

如果插入违反了唯一性约束,INSERT IGNORE 将不会做任何事情,除了记录一个无害的警告。该表将保持原样,并且不会报告错误。在某些情况下,这可能是可取的。

更常见的是第二个选项,ON DUPLICATE KEY UPDATE,它表示“好吧,如果键已经存在,则改为像这样更新该键的行。”

最后是 REPLACE,如果键已经存在,它将删除该行,然后像往常一样执行 INSERT。如果该键以前不存在,它将仅充当 INSERT。

这个堆栈溢出答案有一些例子。

"INSERT IGNORE" vs "INSERT ... ON DUPLICATE KEY UPDATE"

【讨论】:

【解决方案2】:

您需要将这些字段称为 UNIQUE_KEY

【讨论】:

    【解决方案3】:

    要使列不同,您需要具有主键约束/唯一键。主键用于将一个表与另一个表关联起来,它的值应该不为 NULL。但在您的情况下,您可以使用 唯一约束 来仅存储唯一/不同的值。

    【讨论】:

      猜你喜欢
      • 2016-08-15
      • 2012-06-19
      • 1970-01-01
      • 2017-09-12
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多