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

Tol*_*urt 3 mysql sql

我有一个名为 的表requests,其列是id, placeId, songId,userId

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

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

我希望这个检查发生在 SQL 级别,这样我就可以像这样进行查询insert into requests (...) values (...) on duplicate key do something else

mar*_*osh 5

您可以像这样在多个列上创建 UNIQUE 索引

CREATE UNIQUE INDEX placeSong
ON requests (placeId, songId)
Run Code Online (Sandbox Code Playgroud)


kro*_*lko 5

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

ALTER TABLE requests ADD CONSTRAINT placeSong UNIQUE( placeId , songId );
Run Code Online (Sandbox Code Playgroud)