2012-12-13 33 views
2

我有一個表我可以在2列上有2個唯一鍵,但不能組合嗎?

table userinfo (
    user, 
    email, 
    address, 
    primary key(user) 
); 

在這個表中「用戶」字段是一樣的,在插入時「電子郵件」。但用戶可以在後面更改他們的'電子郵件'。 所以我想讓電子郵件也是唯一的,如果電子郵件已經存在於表格中,插入查詢失敗。

是否有可能?

在此先感謝,這只是一個例子。

+0

如果您要求電子郵件是唯一的,那麼爲什麼不把它作爲主鍵? (我不是故意重燃關於自然與代理鍵的宗教辯論,但是如果你真的想在數據庫層中強加唯一性約束,那麼它可能是一個明智的解決方案。 – eggyal

回答

4

是,添加一個UNIQUE約束

table userinfo (
    user, 
    email, 
    address, 
    primary key(user), 
    CONSTRAINT tb_uq UNIQUE (email) 
); 

表將擁有獨特的USER和獨特Email

+0

您的意思是CONSTRAINT tb_uq UNIQUE(電子郵件)。對? –

+0

@AjitCatalányep,已更新。 –

+0

謝謝你的工作 –

2

您可以在表格上創建多個索引。所以如果你在你想要的列上創建2個唯一的索引,它將會以你想要的方式工作。如果您在多個列上創建1個索引,則這些列的組合必須是唯一的。

相關問題