如何在数据库的标识列里插入特定的值

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

创新互联-专业网站定制、快速模板网站建设、高性价比望奎网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式望奎网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖望奎地区。费用合理售后完善,十载实体公司更值得信赖。

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

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,但是如果再插入一个已有的值的话,你还是会看到错误消息。

当前名称:如何在数据库的标识列里插入特定的值
文章源于:http://www.shufengxianlan.com/qtweb/news18/408468.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联