Уникальная путаница строк mysql - PullRequest
0 голосов
/ 10 октября 2018

Вот моя таблица

id       some_column           store_id                  
1         (Excl. Tax)             1
2         (Incl. Tax)             1
3         Target Rule/Product     1       
4         File %1 does not exist  1         
5         hello                   1
6         hello                   2 <--- valid because store_id is 2 If its 1 then it should invalid as I want unique string for each store

...

Где id - автоинкремент и первичный ключ, some_column имеет varchar и unique constraint, а store_id - идентификатор моего магазина (можетбыть 1 или 2 или 3 и т. д.)

В этой таблице все работает, но когда у меня store_id имеет 2, и в то время я добавляю ту же строку с store_id 1, тогда это дает мне уникальное нарушение ограничениянайдена ошибка.Но я хочу избежать этой ошибки, так как она имеет другой store_id.так как я могу этого достичь?Есть идеи по этому поводу?

РЕДАКТИРОВАТЬ

CREATE TABLE `comment_data` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Entity ID',
  `test_text` varchar(255) NOT NULL COMMENT 'Test String',
  `store_id` smallint(5) unsigned NOT NULL COMMENT 'Store ID',
  `translation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Modification Time',
  PRIMARY KEY (`id`,`store_id`),
  UNIQUE KEY `CUSTOMER_TEST_TEXT` (`test_text`),
  KEY `CUSTOMER_STORE_ID` (`store_id`),
  CONSTRAINT `CUSTOMER_STORE_ID_STORE_STORE_ID` FOREIGN KEY (`store_id`) REFERENCES `store` (`store_id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='comment_data';

1 Ответ

0 голосов
/ 10 октября 2018

Добавьте уникальное ограничение к обоим столбцам some_column и store_id:

ALTER TABLE yourTable ADD UNIQUE u_idx (some_column, store_id);

Если у вас уже есть уникальное ограничение для some_column, то вы можете иметьбросить это первым:

ALTER TABLE yourTable DROP INDEX old_idx;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...