ORA-00972:标识符太长-在Oracle 11g中的表列上添加注释时

问题描述 投票:0回答:1

我想使用以下SQL语句在列上添加注释。

COMMENT ON COLUMN EMPLOYEES.EMPLOYEE_ID IS "Primary key of employees table"

这是一个非常简单的示例,摘自Oracle 11g的示例架构。需要注意的重要一点是,我在双引号之间指定了实际的注释。执行命令时会出现此错误。

ORA-00972: identifier is too long
*Cause:    An identifier with more than 30 characters was specified.
*Action:   Specify at most 30 characters.

但是如果我将双引号替换为单引号,即使注释长度超过30个字符,它也不会出现错误。

COMMENT ON COLUMN EMPLOYEES.EMPLOYEE_ID IS "Primary key of employees table XD"

我不知道这种行为的原因是什么,您能帮我吗?

oracle11g ddl
1个回答
0
投票

单引号之间的一系列字符是一个字符串。双引号之间的一系列字符是一个标识符。标识符可以是表名,列名,数据类型等。

如果您尝试使用标识符,Oracle将尝试解析该标识符。在这种情况下,它会在由于没有表名为"Primary key of employees table"的表而引发标识符无效的错误之前或在引发错误之前引发标识符无效的错误(因为它太长)该标识符在该特定SQL语句中的该特定点无效,因为comment语句需要一个字符串。从理论上讲,Oracle可以抛出任何这些错误。只是从工作流的角度来看,在尝试分析特定DDL语句的语法之前,进行适用于所有SQL语句的操作(解析标识符)才更有意义。

© www.soinside.com 2019 - 2024. All rights reserved.