根据sql中的另一个字段值创建唯一字段

时间:2016-11-27 07:54:36

标签: mysql sql database

如果隐私字段是公开的,则标题字段是唯一的 如何在MySQL数据库服务器或任何解决方案中维护

id | u_id | title | privacy
--------------------------------
1  |  1   | Hello | public
2  |  2   | Hello | private
3  |  2   | Hello | public      ** is not possible

2 个答案:

答案 0 :(得分:0)

您可以使用其中一个mysql怪癖来获取您想要的内容.Mysql将NULL视为唯一索引中的唯一值。因此,将隐私列更改为DEFAULT NULL并在(title,privacy)上添加UNIQUE KEY。 当您获得数据时,只需使用NULL作为隐私

COALESCE(privacy,'private')

以下是FIDDLE,请尝试插入另一个' Hello' public' public'它会失败

答案 1 :(得分:0)

您可以使用2个表格用于私有,1个用于公共隐私记录。然后,您必须在“公共”表中的标题字段上创建唯一索引。

保持这种约束的另一种方法是在插入之前和更新之前使用触发器,如果​​已经存在导致冲突的记录,则会抛出异常。