2012-05-02 21 views
1

我正在使用MySQL的工作臺爲數據庫創建一個模式。我的一個表格包含一個personId的字段,如果他們有一個(他們不可能),那麼還包括一個國家ID號碼。如果在MySQL工作臺中另一個字段是'PK','UQ'如何工作?

personId字段是整個架構中用作唯一標識符的字段,所以我已經勾選了它的「PK」和「NN」選項。現在我希望能夠確保系統不允許具有不同personId的新插入,如果它具有與已存在的實體相同的國家ID。但是,國家ID不是主鍵,事實上可能是空的。

我一直在看'UQ'選項,但是我找不到明確的文件。我擔心它會自動創建數字,當我真的希望它們被用戶插入或保留爲空時。有人知道嗎?

回答

2

UQ將一個字段標記爲unique key。這強制給定字段中的唯一性,除了NULL。這正是我需要的國家身份證字段。

http://dev.mysql.com/doc/refman/5.5/en/create-table.html

的唯一索引創建,使得索引中的所有值必須是不同的約束。如果嘗試使用與現有行匹配的鍵值添加新行,則會發生錯誤。對於所有引擎,UNIQUE索引允許可以包含NULL的列的多個NULL值。