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

数据库
数据库在当下社会中的应用是越来越广,下文中将为大家讲解如何在数据库的标识列里插入特定的值,希望对大家能够有所帮助。

数据库是大家都非常熟悉的,下文中将为大家介绍如何在数据库的标识列里插入特定的值。尽管你可以对标识列(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,但是如果再插入一个已有的值的话,你还是会看到错误消息。

 

责任编辑:迎迎 来源: 中国IT实验室
相关推荐

2010-11-16 13:54:47

Oracle标识列

2018-01-26 13:28:48

数据库数据重复数据库清理

2011-07-25 09:45:51

树状结构数据库存储

2020-10-12 11:16:32

数组特定值元素

2011-08-04 18:00:47

SQLite数据库批量数据

2010-06-18 13:47:21

SQL Server数

2010-03-12 13:10:02

Python编程语言

2011-05-19 09:53:33

数据库对象

2021-09-09 09:28:08

面向列数据库面向行

2021-03-08 10:18:55

数据库数据Prometheus

2009-10-27 16:36:07

Oracle如何解锁

2010-10-09 10:29:29

MySQL外键

2010-08-26 09:13:02

Infobright

2010-08-26 09:01:27

Infobright

2010-08-26 14:01:59

DB2插入特殊字符

2011-04-12 13:44:17

CachéOracle数据库

2011-05-24 10:46:21

国产数据库安全

2009-07-15 18:01:53

Jython数据库

2010-05-14 17:34:36

MySQL数据库列值

2017-10-17 10:34:16

数据中心混合存储
点赞
收藏

51CTO技术栈公众号