(快速參考)

unique

用途

在資料庫層面限制屬性為唯一

範例

username unique: true

說明

如果屬性必須唯一,請設定為 true。這是一個持續呼叫,將會查詢資料庫。

有可能(儘管在實務上不太可能)通過唯一性驗證,但後續儲存失敗。如果在 Grails 檢查和實際儲存您的執行個體之間,另一個儲存或更新碰巧更新了資料庫,呼叫將會失敗。防止這種情況發生的唯一方法是在 SERIALIZABLE 隔離層級使用交易,但這對效能非常不利。

您也可以透過宣告要包含的其他欄位作為參數值,來定義多欄位 unique 限制。如果只有一個其他欄位,請指定其名稱,但如果有多個欄位,請使用清單,例如

範例

group unique: 'department'

在此範例中,group 名稱在一個 department 中必須唯一,但在不同的部門中可能會有相同名稱的群組,也就是說,群組名稱本身並不唯一。

另一個範例

username(unique: ['group', 'department'])

在此範例中,usernamegroupdepartment 中必須唯一。在不同的群組或不同的部門中可能會有相同的登入。

此限制會影響Schema 產生

錯誤代碼:className.propertyName.unique