我是Microsoft SQL Server的新手,我对这个INSERT
查询有一个问题,即在一个非常大的表中插入一条新记录(它有很多列)。
我有这个问题:
INSERT INTO VulnerabilityAlertDocument ([Id],
[VulnerabilityAlertId],
[SourceId],
[BugTraqID],
[Title],
[StatusID],
[CVE],
[Published],
[LastUpdated],
[Remote],
[Local],
[Credibility],
[Classification],
[Availability],
[Ease],
[Authentication],
[CVSS2_BaseScore],
[CVSS2_TemporalScore],
[CVSS2_BaseVector],
[CVSS2_TemporalVector],
[CVSS1_BaseScore],
[CVSS1_TemporalScore],
[NVD_CVSS2_BaseScore],
[NVD_CVSS2_ComponentString],
[ImpactRating],
[Severity],
[EaseofExploit],
[UrgencyRating],
[LastChange],
[ShortSummary],
[Impact],
[TechnicalDescription],
[AttackScenario],
[Exploit],
[Credit],
[URL],
[AlertStatusId],
[Type],
[DetailLevel],
[Language],
[dd])
VALUES('10000',
'10000',
'TEST',
'5',
'TEST TITLE',
'1',
'TEST CVE',
'1998-04-30 00:00:00.000',
'2007-11-05 16:32:34.000',
'TEST REMOTE',
'TEST LOCAL',
'TEST CREDIBILITY',
'TEST CLASSIFICATION',
'TEST Availability',
'TEST EASE',
'TEST Authentication',
'TEST CVSS2_BaseScore',
'TEST VSS2_TemporalScore',
'TEST CVSS2_BaseVector',
'TEST VSS2_TemporalVector',
'TEST CVSS1_BaseScore',
'TEST CVSS1_TemporalScore',
'TEST NVD_CVSS2_BaseScore',
'TEST NVD_CVSS2_ComponentString',
'2',
'3',
'10',
'7',
'TEST LastChange',
'TEST ShortSummary',
'TEST IMPACT',
'TEST TechnicalDescription',
'TEST AttackScenario',
'TEST Exploit',
'TEST Credit',
'TEST URL',
'5',
'3',
'1',
'TEST Language',
'NULL');
我在其中将特定值插入指定列(我通过第一个查询部分指定列,并通过查询的第二部分指定相关值)
问题是,当我尝试执行上一个查询时,我获得了以下错误
Msg 544,Level 16,State 1,Line 1
无法在表'VulnerabilityAlertDocument'中为identity列插入显式值 IDENTITY_INSERT设置为OFF。
为什么呢?这是什么意思?如何更改查询以解决此问题,并将记录插入表中?
答案 0 :(得分:1)
在SET IDENTITY_INSERT VulnerabilityAlertDocument ON
INSERT
在INSERT
之后,添加SET IDENTITY_INSERT VulnerabilityAlertDocument OFF
答案 1 :(得分:1)
您有一个标识列,那么您不必插入ID,您必须从查询中删除Id以及Id的值
答案 2 :(得分:1)
从列列表中删除[Id]列及其对应的值“10000”。该错误是由于您尝试使用值填充列,并且SQL正在抱怨他可以提供的自动处理值。 顺便说一句,如果这些列是数字类型,则不需要引用数值。
答案 3 :(得分:0)
在查询之前使用SET IDENTITY_INSERT ON
。
标识列自动增加,因此不允许插入。
您需要明确声明要将数据插入列中,以便SQL服务器允许它。
确保不为此列插入重复值。
最佳做法是避免将值插入IDENTITY列。
答案 4 :(得分:0)
删除“[ID]”
这样写:
INSERT INTO your table name
例如: 如果您有具有属性ID,name和dept_name的Instructor表 使用:插入命令如bellow
Insert Into Instructor (ID, name, dept_name) Values (11111, 'Andrea', 'Biology');
试试这个让我告诉你结果!!