2016-11-10 61 views
-2

我需要自動在decimal增量十進制列在SQL Server 2014SQL服務器:自動遞增的十進制列

+6

第一關的小提...爲什麼?第二,DP有多少?請提供樣本數據。 – JohnHC

+1

試過,得到這個錯誤信息:'標識列'D'必須是數據類型int,bigint,smallint,tinyint或者小數或者數字,刻度爲0,並且約束爲不可空。「# –

+0

@JohnHC我必須給出一個自動生成的版本號。例如:1.0,2.0,。 。 。 –

回答

0

我的實際要求是爲我的存儲過程的每個調用一個版本號。我已經實現了這個如下。

難道創建和表的更新用外部

create table version(no decimal(2,2)) insert into version(1.0)

下面是我的存儲過程

Update version set no=(select max(no) from version)+1

select no.version,t.* from table t left join version

0

宣言,但你只選擇整數格式得到。

CREATE TABLE #Record(id decimal(18,0) identity primary key , name VARCHAR(100)) 
INSERT INTO #Record(name)SELECT 'name1' UNION ALL SELECT 'name2' SELECT * FROM #Record 
1

你應該告訴我們你想要達到的目標,但一種方式來模擬自動遞增的十進制列是將其定義爲計算和連接到自動遞增正常(整數)列。例如: -

定義:

create table AutoincrementDecimalTest 
(
    Id INT NOT NULL IDENTITY(1, 1), 
    SomeText NVARCHAR(200) NOT NULL, 
    -- you may declare it as persisted, if the extra space is not problem 
    AutoincrementDec AS CAST(Id * 0.2 AS NUMERIC(18, 2)) 
) 

當然,有一些限制你的表情,就指出here

測試:

insert into AutoincrementDecimalTest (SomeText) VALUES ('test1'), ('test2') 
GO 

select * from AutoincrementDecimalTest 
GO 
+0

謝謝。我的實際需求是爲我的邏輯的每次迭代生成一個版本號。我確實如下所示。 在我的邏輯我已經將其設置爲@瓦爾+ 1的環形發起一個小數變量用1.0 '聲明@var十進制(5,2) 集@ VAR = 1.0' ,然後用。 ' 設置@ var = @ var + 1 print @var' –

+0

您的解決方案可能有效,但您應該考慮基於集合的術語 - 一次插入多個自動生成的插入可能會比while循環中的單個插入要快得多。 – Alexei