我想将文章复制到新的集合中。
我尝试了一个查询,但显示了以下错误:
“无法将值NULL插入列'intArticleCollectionId'”
我在互联网上搜索了一个解决方案。直到现在我有以下查询:
DECLARE @lastID int
DECLARE @lastID = Last_ID from LastIdentifiers where Tablename ='WA_ARTICLECOLLECTIONS'
INSERT INTO WA_ARTICLECOLLECTIONS (intArticleCollectionId,intArticleId,intCollectionId,chvArticleNr,chvFabricDescription,inyActive)
SELECT
IDENTITY(int, @lastID , 1) AS ID, intArticleCollectionId,intArticleId,4,chvArticleNr,chvFabricDescription,inyActive
FROM
WA_ARTICLECOLLECTIONS
WHERE intCollectionId = 5
这对我没有帮助,有人可以告诉我如何改变这一点。
我知道解决方案是改变设计以设置Identity ON,但这对我们来说不是解决方案; - (。
答案 0 :(得分:0)
正如评论中所说,最好的解决方案是重新设计表格,以便从IDENTITY
类型中受益。但这并不总是可行的,这是我遇到同样问题时的解决方案:
DECLARE @lastId INT
DECLARE @newItems TABLE (id INT IDENTITY(1,1)
,articleId INT
,collectionId INT
,articleNr VARCHAR(20)
,fabricDescription VARCHAR(256)
,active BIT)
SET @lastId = (SELECT MAX(AC.intArticleCollectionId)
FROM WA_ARTICLECOLLECTIONS AC)
INSERT INTO @newItems(articleId, collectionId, articleNr, fabricDescription, active)
SELECT AC.intArticleId
,4
,AC.chvArticleNr
,AC.chvFabricDescription
,AC.inyActive
FROM WA_ARTICLECOLLECTIONS AC
WHERE AC.intCollectionId = 5
INSERT INTO WA_ARTICLECOLLECTIONS (intArticleCollectionId,intArticleId,intCollectionId,chvArticleNr,chvFabricDescription,inyActive)
SELECT @lastId + I.id
,articleId
,collectionId
,articleNr
,fabricDescription
,active
FROM @newItems I
您可能需要调整表@newItems
的列类型,但目标是向您展示我解决问题的方法。
希望这可以帮助您解决问题。