在在公司,我在現在的工作,他創造了一個表,接受一個int作爲ID領域的全球DBA的infinte智慧,但不自動遞增的數量。自動遞增的SQL值
我從.Net傳遞了一個表值參數,因爲它有大約100或更多行數據在任何時候都被傳遞,我不想殺死應用程序,錘擊網絡或SQL Server 。
所以這是我的存儲過程
CREATE PROCEDURE sp_Insert_Supporting_Error_Info
(@tvp [dbo].udt_CEQZW READONLY)
as
begin
INSERT INTO CEQZW
ERROR_VAR_ID,
ERROR_ID,
ERROR_VAR_TYPE_CD,
ERROR_VAR_VALUE)
SELECT (SELECT coalesce(MAX(ERROR_VAR_ID), 0) + row_number() over (order by
(select NULL)) FROM CEQZW) as ERROR_VAR_ID,
ERROR_ID,
ERROR_VAR_TYPE_CD,
ERROR_VAR_VALUE FROM @TVP
end
go
我希望這SELECT coalesce(MAX(ERROR_VAR_ID), 0) + row_number() over (order by (select NULL)) FROM CEQZW
將一些如何做的伎倆對我來說,當我用這個
declare @p3 dbo.udt_CEQZW
insert into @p3 values(1,N'es',N'test')
insert into @p3 values(1,N'ec',N'test')
insert into @p3 values(1,N'ec',N'test')
insert into @p3 values(1,N'ses',N'test')
insert into @p3 values(1,N'es',N'test')
exec sp_Insert_Supporting_Error_Info @p3
本次測試的是什麼,我回去
(1 row(s)affected)
(1行(一個或多個)受影響)
(1行(一個或多個)受影響)
(1行(一個或多個)受影響)
(1行(一個或多個)受影響) 消息2627,級別14,狀態1,過程sp_Insert_Supporting_Error_Info,第9行 違反PRIMARY KEY約束'PK_CEQZW'。不能在對象'dbo.CEQZW'中插入重複鍵。重複的鍵值是(1)。 該聲明已被終止。
所以我的問題是如何將我,比錘擊網絡,應用程序和SQL Server自動遞增並添加ID到表
爲什麼不把自己的ERROR_VAR_ID聲明爲autoincrement? –
我很想去,但這裏的DBA並不相信他們,他們喜歡用攪拌器來貼着你的臉,試圖讓他理解東西...... –
不相信他們嗎?你可以告訴他他們存在... :-) –