2016-11-27 74 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

這是不正確的方式 –

相關問題