2011-06-13 91 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