【发布时间】:2016-07-05 18:18:47
【问题描述】:
我的数据库中有以下值:
我想在tv_series_id+name+tv_season_number+tv_episode_number 上创建一个唯一键。但是,对于我使用常规的目的,上述内容并不适用:
ALTER TABLE main_itemmaster ADD UNIQUE KEY (tv_series_id, tv_season_number, tv_episode_number, name)
因为空值。在数据库级别(而不是查询端)解决这个问题的方法是什么?
澄清一下,以上内容是不允许的,因为“97736-Season 4-4-NULL”重复了 10 次。作为最后的手段,我考虑实施的解决方案是存储一个额外的字符串列以实现唯一性,因此上述内容为“97736-Season 4-4-”。
【问题讨论】:
-
我很困惑。 MySQL 允许在唯一索引 (dev.mysql.com/doc/refman/5.7/en/create-index.html) 中多次出现
NULL值。所以,你的方法应该有效。 -
@GordonLinoff 更新后的最后一句话是否有助于澄清?
-
你必须允许空值吗?您不能为 tv_episode_number 设置一个默认值(例如 0)吗?
-
一个
ON INSERT触发器,用于创建合成键,然后您可以将其包含在合成键中。 -
@evsheino 是的,会有空值,例如,电视季或电影没有剧集编号。将其存储为 0 可能会解决这个问题,但会搞砸很多其他事情。