sql—数字数据类型oracle的默认值的正确格式

iugsix8n  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(506)

我有一个用于pl/sql的表结构代码,如下所示(此代码只是一行代码创建):

"VERSION" NUMBER(10) DEFAULT 1  1 105331  NOT NULL

问题在于默认值之后的数字。有人知道这是否合理吗?如果有,那是什么意思?当我运行整个代码时,我得到了一个“缺少右括号”的错误,但是当我删除这一行时,它就工作了(这段代码不是我写的,我没有权限访问编写它的开发人员)

vyswwuz2

vyswwuz21#

有人知道这是否合理吗?
不,它没有意义,也不是语法上有效的代码。 1 以及 105331 每个数字都是组合的吗 1 1 105331 不是数字,而是3个数字,把3个数字放在一个数字里是没有意义的 NUMBER 列。
当sql解析器解析语句时,它将得到:

"VERSION" NUMBER(10) DEFAULT 1

到目前为止,这是有效的,然后它读取下一个数字,这是无效的语法,所以oracle抱怨无效的语法,并建议有一件事是有效的,那就是用右括号结束ddl语句(这就是错误消息的来源)。
通常,(语义)版本标识符是一个字符串,其中包含3个以句号分隔的数字,表示主要版本号、次要版本号和修补程序版本号(这不是可以表示为单个十进制数的数字),因此:

"VERSION" VARCHAR2(10) DEFAULT '1.1.105331' NOT NULL

将列转换为这种格式是否有意义是您必须确定的,因为列的含义是一个业务决策,而不是我们需要确定的领域知识;但是,您当前的代码在语法上是无效的,我们可以告诉您,这是没有意义的,它将不会编译。

相关问题