我有一张桌子:
Ratings
---
PersonId int FKEY
FormId int FKEY
Rating int (NULLABLE)
执行此查询时:
INSERT INTO Ratings (PersonId, FormId)
SELECT p.PersonId, f.FormId
FROM People p, Forms f
我收到此错误:
无法在表格中列出标识列的显式值'评级'当IDENTITY_INSERT设置为OFF时。
有一次,我不小心将两个外键列设置为复合主键,我担心可能存在某种形式的数据损坏。从长远来看,我该怎么做才能解决这个问题或修复我的问题?
答案 0 :(得分:1)
请修改您的评级表格结构。其中一列(PersonId或FormId)被配置为IDENTITY列(序列),这没有任何意义,因为它们都是指向其他表的FK。您应该从此表中的列(即PersonId或FormId)中删除IDENTITY属性。
答案 1 :(得分:0)
此脚本演示了IDENTITY_INSERT
的工作原理。请检查 - 没有定义PRIMARY KEY
。
CREATE TABLE dbo.Tool(ID INT IDENTITY, Name VARCHAR(40))
GO
SELECT * FROM dbo.Tool
GO
SET IDENTITY_INSERT dbo.Tool ON
GO
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel')
GO
SELECT * FROM dbo.Tool
GO
DROP TABLE dbo.Tool
GO
答案 2 :(得分:0)
尝试设置IDENTITY_INSERT
SET IDENTITY_INSERT [Table] ON
--Write your Insert Query
SET IDENTITY_INSERT [Table] OFF