【发布时间】:2015-05-20 03:06:01
【问题描述】:
我有下表:
- territory_id
- platform_id
- title_id (NULLable)
- collection_id (NULLable)
以下是我在表格中的一些值:
1 - ('US', 'ITUNES', 1, NULL)
2 - ('US', 'ITUNES', 1, NULL)
3 - ('US', 'ITUNES', NULL, 1)
1 和 2 是重复的,不应同时允许。但是,使用上述四个字段的外键:
ALTER TABLE pricing ADD UNIQUE KEY (territory_id, platform_id, title_id, collection_id)
它仍然允许我插入它,很可能是因为如果其中一个字段为空,它会忽略完整性检查。有没有办法在不创建两个唯一键的情况下解决这个问题,(territory_id, platform_id, title_id) 和 (territory_id, platform_id, colletion_id)?
【问题讨论】:
-
它没有忽略完整性检查,NULL 值不被视为彼此相等。是的,有时这很烦人,但据我所知,没有办法告诉 MySQL 将 NULL 视为相同的 UNIQUE 约束。此外,两个唯一键实际上并不等效,尽管它们可能为您服务。
(US, ITUNES, 1, 1)是应该能够与您的第一个值示例一起存在的记录吗?
标签: mysql