【发布时间】:2015-07-02 19:53:01
【问题描述】:
CREATE SEQUENCE dbo.Sequence1
AS decimal
START WITH 1 INCREMENT BY 0.3
MINVALUE 2 MAXVALUE 4
CYCLE;
错误:
为给定数据类型的参数“INCREMENT BY”指定了无效值。
我想创建一个小数计数器。怎么了?不支持十进制?
更新:
当我创建时
CREATE SEQUENCE dbo.Sequence1
AS float
....
SQL Server Management Studio 返回错误:
序列对象“dbo.Sequence1”的数据类型必须为 int、bigint、smallint、tinyint 或小数位或小数位数为 0 的数字,或任何基于上述整数之一的用户定义数据类型数据类型。
这就是我尝试使用decimal 类型创建序列的原因。
【问题讨论】:
-
这里发生了几件有趣的事情。首先,您定义了一个小数,但您没有定义范围或精度。这意味着它将使用默认值。您应该始终定义范围和精度。其次是您从定义为小于最小值开始。不太确定那会做什么,但在逻辑上没有意义。
-
就像 Gordon 在下面所说的,您只能使用小数点为 0(不允许使用小数点)。序列只是整数。
-
好的人们...谢谢。有什么替代品?
-
@kellismitt:当你的问题无法解决时,重新定义问题。 :) 在这种情况下,我会将所有内容乘以 10(增量为 3,最小值为 20,最大值为 40),然后在您需要实际使用它时除以。
标签: sql sql-server