另一個字段的值需要的標題域是唯一的,如果隱私領域是公共 如何在MySQL數據庫服務器或任何解決方案保持創建一個唯一的字段依賴於SQL
id | u_id | title | privacy
--------------------------------
1 | 1 | Hello | public
2 | 2 | Hello | private
3 | 2 | Hello | public ** is not possible
另一個字段的值需要的標題域是唯一的,如果隱私領域是公共 如何在MySQL數據庫服務器或任何解決方案保持創建一個唯一的字段依賴於SQL
id | u_id | title | privacy
--------------------------------
1 | 1 | Hello | public
2 | 2 | Hello | private
3 | 2 | Hello | public ** is not possible
您可以使用MySQL的一個怪異以得到你想要的東西.Mysql將NULL作爲唯一索引中的唯一值處理。將隱私列更改爲DEFAULT NULL並在(title,privacy)
上添加一個UNIQUE KEY。 當你得到的數據只是使用NULL作爲隱私與
COALESCE(privacy,'private')
這裏是一個FIDDLE一起玩,嘗試插入另一個「你好」,「大衆」,它會失敗
您可以使用2表格一個用於私人,一個用於公共隱私記錄。然後,您必須在「公共」表中的標題字段上創建唯一索引。
保持這種約束的另一種方法是在插入之前和更新之前使用觸發器,如果已經存在導致衝突的記錄,則會觸發異常。
這是不正確的方式 –
這不是正確的方式 –
@ Al-Amin這意味着你知道正確的方法,所以你可以詳細說明它爲什麼錯了嗎? – Mihai
對不起,感謝您的建議 –