为什么我不能插入此表?

时间:2015-03-18 18:22:42

标签: sql sql-server sql-server-2008

真的,我不知道该问什么。

我正在插入一个主键为UNIQUEIDENTIFIER的表。 IDENTITY_INSERT已关闭,因此我认为我可以在不包含GUID值的情况下插入。

但是当我运行这个脚本时:

DECLARE @temp TABLE (id UNIQUEIDENTIFIER)

INSERT INTO sBound( --line 4
        cPolNum, cName1, dBound, dExpire, ... ~ 40 other columns
        nQuoteNum
        )
OUTPUT INSERTED.iRowID INTO @temp (id) 
(SELECT TOP 1
        cPolNum, cName1, dBound, dExpire, ... ~ 40 other columns
        3680189 
    FROM
        sBound 
    WHERE
        iRowID = '14863E9C-6AE7-4B7A-916D-038ECBFA4668');

DECLARE @newID UNIQUEIDENTIFIER
SELECT @newID = id
FROM @temp;

UPDATE sQuote --line 21
    SET 
        iRowID = @newID
    WHERE
        iRowID = 'AA030454-BFC9-E411-B421-0015176857B6'

我收到了这个错误:

Msg 544, Level 16, State 1, Line 4
Cannot insert explicit value for identity column in table 'sBound' when IDENTITY_INSERT is set to OFF.
Msg 515, Level 16, State 2, Line 21
Cannot insert the value NULL into column 'iRowID', table 'NREngine.dbo.sQuote'; column does not allow nulls. UPDATE fails.
The statement has been terminated.

为什么它告诉我我不能为标识列插入值?我没有为标识列提供值。我应该寻找什么?

如果我无法明确提供值,并且不能提供值,我该如何插入?

1 个答案:

答案 0 :(得分:2)

标识列不能是GUID。

运行此选项可帮助您找到表中标识的列:

SP_HELP 'sBound'