gpt4 book ai didi

MySQL 限制 MySQL 字段的值(允许一个特定值和多个其他值。)?

转载 作者:行者123 更新时间:2023-11-29 10:50:05 25 4
gpt4 key购买 nike

今天我偶然发现一个棘手的问题,我想限制某个字段的某些值的出现次数,这是我的表格:

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;

例如,我们有两个用户BobTom,以及一台设备Echouser_id之间的关系>、device_idis_owner 是:

  1. 一台设备只能有一个所有者,这意味着只允许一对(设备:Echo,is_owner:true)。
  2. 一个设备可以有多个用户,也就是说允许同时出现多个用户(device: Echo, is_owner: false)。

唯一约束对我的情况没有帮助,请帮忙。

最佳答案

如果您使用 null 而不是 false 来指示用户不是所有者,那么您可以使用唯一索引来提供此限制,因为 in MySQL unique indexes allow multiple null values 。显然,您需要将 is_owner 字段设为可为空才能正常工作。

否则,这个控件最好放在应用程序层,而不是数据库。在数据库中,您可以使用触发器来检查此条件并防止 raising an sql error 设置额外的所有者记录。 .

关于MySQL 限制 MySQL 字段的值(允许一个特定值和多个其他值。)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43891831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com