SQL Server 2008 / 2005
我混淆了主键和唯一键。
我知道主键不允许NULL,而Unique将接受NULL。另外,一个表可以有'n‘个唯一键..!
主键是否允许为零?
发布于 2011-03-25 08:14:17
主键可以是Zero,但如果在列上设置Identity,它通常会从1开始,而不是从Zero开始。
发布于 2011-03-25 23:38:11
主键可以允许0,这当然取决于主键的数据类型。自动生成的PK (Identity)可以从0开始,但这不是默认行为,您必须将其设置为从0开始(见鬼,如果您愿意,您可以从负数开始)。为了获得最佳结果,应在开始向表中输入数据之前完成此操作。
您不能做的是多条记录的主键为0,因为这违反了主键的唯一性要求。
如果您有现有的数据,并且想要一个值为零的记录用于特定目的(例如,我们为导入过程放置了一个用户,因此insertedby字段可以显示该记录来自导入),那么您可能希望允许在identity字段中手动插入,这样您就可以按您想要的值输入这一条特定记录,然后返回到通常的设置。这是通过以下方式完成的:
set Identity_insert dbo.table1 ON
insert dbo.table1 (id, myfield)
Values (0, 'test')
set Identity_insert dbo.table1 OFF
不要在应用程序生产代码中这样做,这是一个系统管理员类型的任务,应该只在设置正常数据范围之外的特定记录或插入从另一个源传输的记录(当您知道它们的现有id值当前未使用时)时才应偶尔执行。这不应该轻易地用来绕过身份字段的限制。特别是,它永远不应该用于填充跳过身份的记录(由于删除或回滚),因为这违背了使用身份的目的,并且如果没有设置正确的PK/FK关系,可能会导致数据完整性问题。
发布于 2011-03-25 08:13:08
是。NULL表示缺少值。0
是一个值。
https://stackoverflow.com/questions/5427142
复制相似问题