首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL主键可以接受'0‘吗?

SQL主键可以接受'0‘吗?
EN

Stack Overflow用户
提问于 2011-03-25 08:10:10
回答 4查看 22.5K关注 0票数 12

SQL Server 2008 / 2005

我混淆了主键和唯一键。

我知道主键不允许NULL,而Unique将接受NULL。另外,一个表可以有'n‘个唯一键..!

主键是否允许为零?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-25 08:14:17

主键可以是Zero,但如果在列上设置Identity,它通常会从1开始,而不是从Zero开始。

票数 17
EN

Stack Overflow用户

发布于 2011-03-25 23:38:11

主键可以允许0,这当然取决于主键的数据类型。自动生成的PK (Identity)可以从0开始,但这不是默认行为,您必须将其设置为从0开始(见鬼,如果您愿意,您可以从负数开始)。为了获得最佳结果,应在开始向表中输入数据之前完成此操作。

您不能做的是多条记录的主键为0,因为这违反了主键的唯一性要求。

如果您有现有的数据,并且想要一个值为零的记录用于特定目的(例如,我们为导入过程放置了一个用户,因此insertedby字段可以显示该记录来自导入),那么您可能希望允许在identity字段中手动插入,这样您就可以按您想要的值输入这一条特定记录,然后返回到通常的设置。这是通过以下方式完成的:

代码语言:javascript
运行
复制
set Identity_insert dbo.table1 ON
insert dbo.table1 (id, myfield)
Values (0, 'test')
set Identity_insert dbo.table1 OFF

不要在应用程序生产代码中这样做,这是一个系统管理员类型的任务,应该只在设置正常数据范围之外的特定记录或插入从另一个源传输的记录(当您知道它们的现有id值当前未使用时)时才应偶尔执行。这不应该轻易地用来绕过身份字段的限制。特别是,它永远不应该用于填充跳过身份的记录(由于删除或回滚),因为这违背了使用身份的目的,并且如果没有设置正确的PK/FK关系,可能会导致数据完整性问题。

票数 11
EN

Stack Overflow用户

发布于 2011-03-25 08:13:08

是。NULL表示缺少值。0是一个值。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5427142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档