我试图从多个表格中插入,但我遇到了一些问题。当我尝试使用10个条目的样本大小的testdata时,它工作正常。当我尝试在我的实际任务上运行它时,我得到一个约束错误。应该插入大约13000个条目。
我尝试做的是将数据从4个不同的表移动到已经存在的第5个表。表5有一个主键,它不会自行递增,所以我需要在插入查询中定义它并递增它。
到目前为止,这是我的插页:
INSERT INTO LOCATION
(INCREMENT,ID, EID, TEXT, DID, LOCATION, CODE, TEXT, QUANTITY)
SELECT
ROW_NUMBER() OVER(ORDER BY(SELECT NULL)),
p.ID,
f.EID,
p.TEXT,
d.ID,
f.LOCATION,
d.CODE,
s.TEXT,
f.QUANTITY
FROM PROD p
left join Fil f on f.EID= p.EID
left join DEEP d on f.LOCATION= d.LOCATION
left join SIZE s on d.ID = s.ID
我不熟悉ROW_NUMBER函数所以我认为我的错误就在那里。
答案 0 :(得分:0)
问题是您的INCREMENT
列是UNIQUE
,您可能正在尝试添加已存在的值。您可以使用以下内容确保它们不会重复:
DECLARE @MaxIncrement INT = (SELECT ISNULL(MAX(INCREMENT), 0) FROM Location)
INSERT INTO LOCATION
(INCREMENT,ID, EID, TEXT, DID, LOCATION, CODE, TEXT, QUANTITY)
SELECT
@MaxIncrement + ROW_NUMBER() OVER(ORDER BY(SELECT NULL)),
p.ID,
f.EID,
p.TEXT,
d.ID,
f.LOCATION,
d.CODE,
s.TEXT,
f.QUANTITY
FROM PROD p
left join Fil f on f.EID= p.EID
left join DEEP d on f.LOCATION= d.LOCATION
left join SIZE s on d.ID = s.ID
我还建议在该列上使用IDENTITY
(您必须重新创建表格,将数据作为中间步骤移开),因此您不再有此问题。< / p>