小编Mic*_*uel的帖子

只允许复合主键的唯一值组合

我创建了下表,称为books

CREATE TABLE IF NOT EXISTS `books` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` TEXT NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

我创建了另一个名为 compare 的平板电脑来比较books表中的任意两本书:

CREATE TABLE IF NOT EXISTS `compare` (
`id_1` BIGINT UNSIGNED NOT NULL,
`id_2` BIGINT UNSIGNED NOT NULL, 
PRIMARY KEY (`id_1`,`id_2`),
FOREIGN KEY (`id_1`) REFERENCES books(`id`),
FOREIGN KEY (`id_2`) REFERENCES books(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

以前的工作按预期进行,但我需要强制 MySQL 只允许compare表中值的唯一组合。

例如,如果我在compare表中有以下行:

id_1 | id_2
------------
  1  | …
Run Code Online (Sandbox Code Playgroud)

mysql mariadb unique-constraint mariadb-10.2

6
推荐指数
1
解决办法
1302
查看次数

标签 统计

mariadb ×1

mariadb-10.2 ×1

mysql ×1

unique-constraint ×1