【问题标题】:Is oracle case sensitive in ddl statements [duplicate]ddl语句中的oracle区分大小写[重复]
【发布时间】:2013-08-02 09:25:04
【问题描述】:

以下执行失败

create table product_instance (
  "ID" number(19,0),
  constraint pro_instance_pk primary key ("id")
)

给出输出

SQL Error: ORA-00904: "id": invalid identifier
00904. 00000 -  "%s: invalid identifier"

但是将“id”更改为“ID”效果很好

create table product_instance (
  "ID" number(19,0),
  constraint pro_instance_pk primary key ("ID")
)

以下也可以正常工作

create table product_instance (
  ID number(19,0),
  constraint pro_instance_pk primary key (id)
)

感谢是否有人可以回答在 DDL 语句中指定“ID”而不是仅 id 的效果。 oracle 区分大小写还是不区分大小写

【问题讨论】:

    标签: sql oracle ddl ora-00904


    【解决方案1】:

    当您使用引号时,它会使列名区分大小写。看到这个question.

    【讨论】:

    • 当人们使用保留字作为列或表的名称时,这种行为尤其令人讨厌......列名“exclusive”将不匹配“EXCLUSIVE”,例如...:P
    【解决方案2】:

    Oracle 在 DDL 语句中是不敏感的。创建表时,我们不能在 ("") 双引号中使用字段名。

     sql>create table product_instance (
         "ID" number(19,0)***,***
          constraint pro_instance_pk primary key ("ID")
          )
    

    此代码不会在 sql promt 上执行。 并且要对表应用约束,数据类型和约束之间不应有分号。

    【讨论】:

    • 在 DDL 中使用双引号 使 Oracle 区分大小写。发布的脚本确实运行,因为那是逗号而不是分号;定义表级 cronstraint 时,逗号是正确的语法。
    猜你喜欢
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多