我正在运行 MySQL 我有一个如下所示的简单表格:
CREATE TABLE `new_schema`.`test1` (
`id` INT NOT NULL AUTO_INCREMENT,
`unique1` VARCHAR(45) NULL,
`unique2` VARCHAR(45) NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `unique1_UNIQUE` (`unique1` ASC),
UNIQUE INDEX `unique2_UNIQUE` (`unique2` ASC));
然后我添加这样一行:
INSERT INTO `new_schema`.`test1` (`unique1`, `unique2`) VALUES ('x', 'x');
然后我在唯一列中添加具有相同值的另一行:
INSERT INTO `new_schema`.`test1` (`unique1`, `unique2`) VALUES ('x', 'x');
然后我将按预期收到此错误:
11:54:06 INSERT INTO `new_schema`.`test1` (`unique1`, `unique2`) VALUES ('x', 'x') Error Code: 1062. Duplicate entry 'x' for key 'unique1_UNIQUE' 0.203 sec
我的问题是,如何更改 MySQL 检查我输入的唯一值的顺序。因此,在我上面的例子中,我提供了两个违反唯一条目的行为(unique1 和 unique2),但我希望它首先检查 unique2,所以错误将是这样的:
11:54:06 INSERT INTO `new_schema`.`test1` (`unique1`, `unique2`) VALUES ('x', 'x') Error Code: 1062. Duplicate entry 'x' for key 'unique2_UNIQUE' 0.203 sec
谢谢, 标记
最佳答案
你试过那样改变姿势吗
UNIQUE KEY INDEX `unique_UNIQUE` (`unique2`,`unique1`)
像那样:
CREATE TABLE `new_schema`.`test1` (
`id` INT NOT NULL AUTO_INCREMENT,
`unique1` VARCHAR(45) NULL,
`unique2` VARCHAR(45) NULL,
PRIMARY KEY (`id`),
UNIQUE KEY INDEX `unique_UNIQUE` (`unique2`,`unique1`)
);
关于MySQL 索引检查顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22558154/