2011-06-13 72 views
1

我在iphone中使用sqlite(3.7.4)。 我喜歡創建一個表:帶主鍵的sqlite插入


create table A (UserName varchar (50) primary key, Num integer); 

然後我插入的記錄下方兩次:


('abc',1); 

通常應該只有一個數據庫記錄。 但是我在數據庫中找到


(abc,1); 
( ,1); 

我很困惑,作爲用戶名是primary key爲什麼有兩個記錄! 我不知道有什麼問題。 任何人都可以幫助我嗎?

謝謝。

+0

只是發現這是我的同事的錯誤。在上述情況下,永遠不會有這樣的兩個記錄。但是,謝謝你,維克。 – scorpiozj 2011-06-14 03:12:53

回答

1

爲什麼要使用用戶名作爲主鍵。主鍵應該是唯一標識記錄。這是什麼原因當你第二次插入兩次你有主鍵約束衝突

create table A (UserName varchar (50) primary key, Num integer, unique (UserName)); 
+0

這取決於我們的業務邏輯。情況是有時我們不知道記錄是否存在於數據庫中。 – scorpiozj 2011-06-13 02:46:36

+0

@scorpiozj你可以使用唯一的關鍵字來指定唯一的列 – 2011-06-13 02:56:13