我遇到一个棘手的问题,我想限制一个字段的一些值的出现次数,这是我的表:MySQL限制MySQL字段的值(允许一个特定值和多个其他值)?今天
CREATE TABLE `test_table` (
`id` varchar(40) COLLATE utf8_bin NOT NULL,
`create_time` datetime NOT NULL DEFAULT '2010-01-01 00:00:00',
`user_id` varchar(40) COLLATE utf8_bin NOT NULL,
`device_id` varchar(40) COLLATE utf8_bin NOT NULL,
`is_owner` boolean NOT NULL,
`user_nickname` varchar(45) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `un_device` (`device_id`,`is_owner`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
例如,我们有两个用户Bob
和Tom
,和一个装置Echo
,其中user_id
,device_id
和is_owner
的关系是:
- 一个设备仅可具有一个所有者,这意味着只有一对(设备:回声,is_owner:真)是允许的。
- 设备可以有多个用户,这就是说允许多个外观(设备:Echo,is_owner:false)。
唯一的约束在我的情况不会有帮助,请帮助。
你有错误的数据格式。你应该有一个表,每个设备一行,这应该有所有者。你应该有一个单独的表,每个设备和用户一行。 –
您可以在应用程序逻辑强制执行此,或在查询本身 – Strawberry
@Gordon Linoff它需要大量的工作要做,我们的应用程序目前的结构并不稳定,我们一直在试图躲避任何重大变化这将引入更多* bug *。 –