如果隐私字段是公开的,则标题字段是唯一的 如何在MySQL数据库服务器或任何解决方案中维护
id | u_id | title | privacy
--------------------------------
1 | 1 | Hello | public
2 | 2 | Hello | private
3 | 2 | Hello | public ** is not possible
答案 0 :(得分:0)
您可以使用其中一个mysql怪癖来获取您想要的内容.Mysql将NULL视为唯一索引中的唯一值。因此,将隐私列更改为DEFAULT NULL并在(title,privacy)
上添加UNIQUE KEY。
当您获得数据时,只需使用NULL作为隐私
COALESCE(privacy,'private')
以下是FIDDLE,请尝试插入另一个' Hello' public' public'它会失败
答案 1 :(得分:0)
您可以使用2个表格用于私有,1个用于公共隐私记录。然后,您必须在“公共”表中的标题字段上创建唯一索引。
保持这种约束的另一种方法是在插入之前和更新之前使用触发器,如果已经存在导致冲突的记录,则会抛出异常。