gpt4 book ai didi

php - MySql:仅唯一索引,当其他字段为 false 时

转载 作者:行者123 更新时间:2023-11-29 11:28:08 24 4
gpt4 key购买 nike

我有一个商店数据库。到目前为止,只有注册用户才能购买东西,因此我对客户电子邮件地址有一个唯一的索引,因为每个客户只能在数据库中注册一次。

现在我想在不注册的情况下提供订单(“以访客身份订购”)。这个想法是向用户数据库添加一个字段“guest BOOL NOT NULL DEFAULT false”来指示用户是否被创建为访客。但由于允许以访客身份订购,因此用户表中可能会多次使用相同的电子邮件地址(因为一个用户可以以访客身份多次订购)。

所以现在我需要类似的东西:“电子邮件地址”字段应该是唯一的,但仅当“访客”字段为 false 时。

是否可以使用 mysql-features 来做到这一点,或者我是否必须从电子邮件中删除唯一索引并确保在我的代码中每封电子邮件都应该是唯一的,但前提是它不是 guest ?

最佳答案

在 MySQL 中你不能轻易地做到这一点。其他数据库提供过滤索引和计算列,这两者都使这成为可能。

一种选择是拥有一个唯一的 guestid,但对于非客人来说只有一个值(比如 -1,但不是 NULL )。然后您可以在 (emailaddress, guestid) 上创建唯一索引.

您甚至可以使用触发器来维护这样的列。当然,如果您使用触发器,您也可以通过这种方式强制执行约束。

关于php - MySql:仅唯一索引,当其他字段为 false 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37858617/

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