使用列组作为MySQL中的唯一键

时间:2014-02-24 15:02:43

标签: mysql sql

我有一个名为requests的表,其中列为idplaceIdsongIduserId

id是表的主要索引。其余列只是无符号整数,没有定义其他唯一键。

我想要placeId& songId对是唯一的,即,如果某行有placeId:5且songId:12,则其他行不能具有相同的组合。

我希望在SQL级别进行此检查,以便我可以查询insert into requests (...) values (...) on duplicate key do something else

3 个答案:

答案 0 :(得分:2)

您可以在多个列上创建一个UNIQUE索引,如

CREATE UNIQUE INDEX placeSong
ON requests (placeId, songId)

答案 1 :(得分:2)

另一种方法是向表中添加唯一约束:

ALTER TABLE requests ADD CONSTRAINT placeSong UNIQUE( placeId , songId );

答案 2 :(得分:1)

CREATE TABLE `tbl` (
    `ID` INT(11) NOT NULL AUTO_INCREMENT,
    `field1` VARCHAR(45) NOT NULL DEFAULT '',
    `field2` VARCHAR(20) NOT NULL DEFAULT '',
    PRIMARY KEY (`ID`),
    UNIQUE INDEX `Index 2` (`field1`, `field2`)
);