这是我的桌子
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
是我的商店的id(它可以是1、2或3等等)在这个表中,一切正常,但是当我有store_id有2时,我添加的字符串与store_id有1时,它会给我唯一的constraint violation found error。但我想避免这个错误,因为这有不同的存储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';
最佳答案
将唯一约束添加到some_column
和store_id
列:
ALTER TABLE yourTable ADD UNIQUE u_idx (some_column, store_id);
如果您已经对
some_column
有一个唯一的约束,那么您可能必须首先删除该约束:ALTER TABLE yourTable DROP INDEX old_idx;
关于php - 独特的字符串混淆mysql,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52735174/