如何在数据库的标识列里插入特定的值
创始人
2024-07-30 02:40:41
0

数据库是大家都非常熟悉的,下文中将为大家介绍如何在数据库的标识列里插入特定的值。尽管你可以对标识列(identity column)的值及其任意值的用处有千条万条理由,但是和你共同工作的一些人会坚持在给定的表格里使用连续的主关键字(PK)。然后,当发票号丢失的时候,他们就会恐慌、害怕被起诉、掩盖错误,甚至更糟。

为了解决这个问题,你可以创建一个带有标识列的表格,并用一些数据行来填充它:

 

Create a test table.

CREATE TABLE TestIdentityGaps

 

(

 

ID int IDENTITY PRIMARY KEY,

 

Description varchar(20)

 

)

 

GO

 

-- Insert some values. The word INTO is optional:

 

INSERT [INTO] TestIdentityGaps (Description) VALUES ('One')

 

INSERT [INTO] TestIdentityGaps (Description) VALUES ('Two')

 

INSERT [INTO] TestIdentityGaps (Description) VALUES ('Three')

 

INSERT [INTO] TestIdentityGaps (Description) VALUES ('Four')

 

INSERT [INTO] TestIdentityGaps (Description) VALUES ('Five')

 

INSERT [INTO] TestIdentityGaps (Description) VALUES ('Six')

 

GO

 

 

现在,删除几个数据行:

 

DELETE TestIdentityGaps

 

WHERE Description IN('Two', 'Five')

 

 

在我们编写代码的时候,我们知道“二(Two)”和“五(Five)”这两个值丢了。我们想要插入两个数据行来填补这些空缺。两个简单的INSERT陈述式无法满足要求;但是,它们会在序列的结尾创建主关键字。

 

 

INSERT [INTO] TestIdentityGaps (Description)

 

VALUES ('Two Point One')

 

INSERT [INTO] TestIdentityGaps

 

(Description) VALUES ('Five Point One')

 

GO

 

SELECT * FROM TestIdentityGaps

 

 

 

你也无法明确地设置标识列的值:

 

 

 

-- Try inserting an explicit ID value of 2. Returns a warning.

 

INSERT INTO TestIdentityGaps (id, Description)

 

VALUES(2, 'Two Point One')

 

GO

 

 

为了解决这个问题,SQL服务器2000用IDENTITY_INSERT来进行设置。为了强行插入一个带有特定值的数据行,你需要发出命令,然后在后面接上具体插入的内容:

 

 

SET TestIdentityGapsON

 

INSERT INTO TestIdentityGaps

 

(id, Description) VALUES(2, 'Two Point One')

 

INSERT INTO TestIdentityGaps

 

(id, Description) VALUES(5, 'Five Point One')

 

GO

 

SELECT * FROM TestIdentityGaps

 

 

现在你可以看到新的数据行已经用指定的主关键字值插入了。

注意:对IDENTITY_INSERT的设置可以在任何特定的时候用在数据库里的某个表格上。如果需要在一个或者多个表格里填补空缺,你就必须用具体的命令来明确地指明每个表格。

你可以在一个带有标识列的表格里插入一个具体的值,但是要这样做的话,你必须首先把IDENTITY_INSERT的值设置为ON。如果你没有,你就会看到一条错误消息。即使你把IDENTITY_INSERT的值设置为了ON,但是如果再插入一个已有的值的话,你还是会看到错误消息。

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...