MySQL索引检查顺序

时间:2014-03-21 11:58:37

标签: mysql sql

我正在运行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

谢谢, 标记

1 个答案:

答案 0 :(得分:1)

你试过像那样改变位置

    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`)
 );