【发布时间】:2014-04-27 14:44:30
【问题描述】:
我有一张桌子:
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 时,无法为表“Ratings”中的标识列插入显式值。
有一次我不小心将两个外键列设置为复合主键,我担心可能存在某种形式的数据损坏。从长远来看,我可以做些什么来解决这个问题或修复我的问题?
【问题讨论】:
-
如错误信息所示,如果要显式设置值,则需要将
IDENTITY_INSERT设置为ON。 -
我意识到,但我不应该这样做,没有主键,我已经对其他表进行了类似的查询。
-
顺便说一句,我不确定你为什么要大量插入没有任何值的评级记录(甚至允许
null评级) - 你可以简单地使用它们 没有这个表中有记录来记录这样的状态。 -
该表命名不当,但必须维护人员与表单之间的关系,即使此人从未对该表单进行评分。大规模插入实际上只在一个小的现有用户网络中完成,这些用户可以访问所有表单。
标签: sql sql-server tsql