SQL 服务器:自动递增小数列
SQL Server: Auto increment decimal column
我需要在 SQL Server 2014 中自动递增小数列。
decimal
中的声明,但您只能使用 select 整数格式。
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
您应该告诉我们您想要实现什么,但是模拟自动递增的十进制列的一种方法是将其定义为已计算并连接到自动递增的普通(整数)列。例如:
定义:
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
我的实际要求是为我的存储过程的每次调用生成一个版本号。我已经按如下方式实现了这一点。
是否在外部创建和更新了 table
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
我需要在 SQL Server 2014 中自动递增小数列。
decimal
中的声明,但您只能使用 select 整数格式。
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
您应该告诉我们您想要实现什么,但是模拟自动递增的十进制列的一种方法是将其定义为已计算并连接到自动递增的普通(整数)列。例如:
定义:
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
我的实际要求是为我的存储过程的每次调用生成一个版本号。我已经按如下方式实现了这一点。
是否在外部创建和更新了 table
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