【问题标题】:MySQL inserting same rowsMySQL插入相同的行
【发布时间】:2016-05-03 19:30:05
【问题描述】:

有一个这样的sql表

这样的索引

INSERT INTO users_words(iduser,idword,status_of_word) VALUES(4,6,2);
INSERT INTO users_words(iduser,idword,status_of_word) VALUES(4,6,1);
INSERT INTO users_words(iduser,idword,status_of_word) VALUES(4,6,0);
INSERT INTO users_words(iduser,idword,status_of_word) VALUES(5,6,0);
INSERT INTO users_words(iduser,idword,status_of_word) VALUES(8,7,1);
INSERT INTO users_words(iduser,idword,status_of_word) VALUES(8,9,2);

我想要一个唯一索引是和iduser,idword一起的。 如何避免将具有相同值的查询插入索引列? 例如:像 13 和 14 ( idusers_words ) 行一样插入块行

SELECT * FROM users_words;

> idusers_words  |  iduser | idword | status_of_word |
         12             4       6            2
         13             4       6            1
         14             4       6            0
         15             5       6            0
         16             8       7            1
         17             8       9            2

编辑:

我试过这段代码。但是出现了错误“#1062 - 键 'my_unique' 的重复条目 '1-1'”

ALTER TABLE users_words
ADD CONSTRAINT my_unique UNIQUE(iduser,idword);

【问题讨论】:

  • 在编辑的错误:那是因为你已经在表中有一些重复的数据。您必须在添加约束之前将其删除。另外,删除早期的唯一索引/约束,它是多余的。
  • @I_am_Batman 非常感谢。你救了我的命。

标签: mysql sql sql-insert unique-index


【解决方案1】:

根据您的要求,您的唯一索引应仅位于 iduseridword 列上。

您在idusers_words,iduser and idword. 上有索引,这意味着所有三列的组合应该是唯一的。

由于 idusers_words 是自动递增的,因此即使 idusers 和 idword 重复,也会始终满足此条件,并且会插入记录。

【讨论】:

    【解决方案2】:

    您可以像这样对一组字段设置约束:

    CREATE TABLE Persons
    (
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
    )
    

    来源:http://www.w3schools.com/sql/sql_unique.asp

    【讨论】:

    • ALTER TABLE users_words 添加约束 my_unique UNIQUE(iduser,idword);我尝试了这段代码,然后出现错误“#1062 - 键 'my_unique' 的重复条目 '1-1'”
    • 在数据库中,通常您应该在添加约束之前准备好数据。看到这个 - stackoverflow.com/questions/8053447/…
    猜你喜欢
    • 2014-12-21
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多