我对Microsoft非常陌生,我在这个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,第16级,状态1,第1行 当VulnerabilityAlertDocument设置为OFF时,无法在表“IDENTITY_INSERT”中插入标识列的显式值。
为什么?这是什么意思?如何更改查询以解决此问题,从而在表中插入记录?
发布于 2014-02-19 16:53:33
在SET IDENTITY_INSERT VulnerabilityAlertDocument ON之前尝试INSERT
在INSERT之后添加SET IDENTITY_INSERT VulnerabilityAlertDocument OFF
发布于 2014-02-19 16:55:13
您有一个标识列,然后不需要插入Id,您必须从查询中删除Id和Id的值
发布于 2014-02-19 17:12:35
从列列表中移除Id列及其相应的值“10000”。这个错误是由于您试图用一个值填充一个列,而SQL则抱怨他可以提供一个自动处理的值。顺便说一句,如果列是数字类型的,则不需要引用数值。
https://stackoverflow.com/questions/21887021
复制相似问题