【问题标题】:CREATE SEQUENCE Error : invalid value for 'INCREMENT BY'CREATE SEQUENCE 错误:“INCREMENT BY”的值无效
【发布时间】: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


【解决方案1】:

评论有点长。 documentation 非常具体,create sequence 用于整数:

[内置整数类型 |用户定义的整数类型]

序列可以定义为任何整数类型。以下类型是 允许。

(重点是我的。)

因此,不允许使用带有小数点的值。

decimal 只允许小数位数为 0(表示没有小数点)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 2022-11-04
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多