1

我想将文章复制到新集合。

我尝试了一个查询,但显示了以下错误:

“无法将值 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

这也对我没有帮助,有人可以告诉我如何改变它。

我知道解决方案是更改设计以将身份设置为 ON,但这对我们来说不是解决方案;-(。

4

1 回答 1

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

您可能需要调整 table 的列类型@newItems,但目标是向您展示我解决问题的方法。

希望这将帮助您解决您的问题。

于 2014-09-05T08:00:24.480 回答