2016-11-27 53 views
0

另一个字段的值需要的标题域是唯一的,如果隐私领域是公共 如何在MySQL数据库服务器或任何解决方案保持创建一个唯一的字段依赖于SQL

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

回答

0

您可以使用MySQL的一个怪异以得到你想要的东西.Mysql将NULL作为唯一索引中的唯一值处理。将隐私列更改为DEFAULT NULL并在(title,privacy)上添加一个UNIQUE KEY。 当你得到的数据只是使用NULL作为隐私与

COALESCE(privacy,'private') 

这里是一个FIDDLE一起玩,尝试插入另一个“你好”,“大众”,它会失败

+0

这不是正确的方式 –

+0

@ Al-Amin这意味着你知道正确的方法,所以你可以详细说明它为什么错了吗? – Mihai

+0

对不起,感谢您的建议 –

0

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

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

+0

这是不正确的方式 –

相关问题