为什么VB 2010和SQL Server中的数据表以负主键开头?

问题描述

| 我使用SQL Server 2008 R2 Express定义了一个数据库,并使用Visual Basic 2010 Express将其连接到数据库。但是由于某种原因,当我在程序中使用数据库时,它想使用负主键开始。 有什么办法可以使主键只有一个正数?     

解决方法

除了@RNarry Young的回应。您可以检查表的架构 假设您有下表
create table #t
(
    ID int Identity(-1,1),s varchar(100)
)
现在您要插入两个
Insert into #t(s) values(\'ed\')
Insert into #t(s) values(\'ed\')
检查输出
select * from #t
它显示如下。如果您看到屏幕截图。第一行在主键值中显示-1。由于架构中提到的身份种子为-1的原因。 您可以摆脱这个问题。我们应该使用如下所示的模式。
 create table #t
    (
        ID int Identity(1,s varchar(100)
    )
以下是产生的另一种方式
Set Identity_Insert #t On
Insert into #t(ID,s) values(-1,\'ed\')
Set Identity_Insert #t OFF

Set Identity_Insert #t On 
Insert into #t(ID,s) values(-2,\'ed\') 
Set Identity_Insert #t OFF
    ,暂时,我只能想到会导致此的两件事: 创建表时,您(或您使用的某些软件/代码)将身份种子设置为负数。 或者,您(或您正在使用的某些软件/代码)正在使用Identity_Insert,并且只强加一个负数。     ,该表的身份种子将在SSMS中可见。 但是......产生负数也没有关系。关于您的身份价值,实际上只有两个实际问题: 独特价值 足够的空间来覆盖期望值的范围(因此,tinyint键对于跟踪整个世界人口来说不是一个好主意...) 对它们进行排序后,实际值完全不应该引起任何关注。它们在数据库内部。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...