真的,我不知道该问什么。
我正在插入一个主键为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.
为什么它告诉我我不能为标识列插入值?我没有为标识列提供值。我应该寻找什么?
如果我无法明确提供值,并且不能不提供值,我该如何插入?
答案 0 :(得分:2)
标识列不能是GUID。
运行此选项可帮助您找到表中标识的列:
SP_HELP 'sBound'