You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle使用CREATE TABLE LIKE报错00922:缺失或无效选项的技术咨询

问题原因

Oracle不支持CREATE TABLE new_table LIKE old_table;这种语法,该语法常见于MySQL、PostgreSQL等其他数据库,Oracle执行时会因无法识别LIKE选项而抛出00922错误。

替代解决方案
  • 方案一:快速复制基础结构(不含高级约束/索引)
    使用CREATE TABLE ... AS SELECT语句,能快速复制表的列定义、数据类型及NOT NULL约束,且不包含数据:

    CREATE TABLE new_table AS SELECT * FROM old_table WHERE 1=0;
    

    注意:此方法不会复制主键、外键、唯一约束、索引、触发器、列默认值等对象,若需这些结构需手动添加。

  • 方案二:完整复制所有表结构(含约束、索引等)
    通过Oracle内置的DBMS_METADATA包获取原表的完整DDL语句,修改表名后执行即可完全复刻原表结构:

    -- 替换OWNER_NAME为原表所属用户名,当前用户为表所有者时可省略第三个参数
    SELECT DBMS_METADATA.GET_DDL('TABLE', 'OLD_TABLE', 'OWNER_NAME') FROM DUAL;
    

    将查询返回的DDL语句中的表名改为new_table,执行该语句就能得到与原表完全一致的结构,包括所有约束、索引、触发器等。

  • 方案三:Oracle 12cR2及以上版本专属语法
    若使用Oracle 12cR2或更高版本,可直接使用增强版的类LIKE语法:

    CREATE TABLE new_table
    LIKE old_table
    INCLUDING ALL INDEXES
    INCLUDING CONSTRAINTS
    INCLUDING TRIGGERS;
    

    此语法可直接复制原表的所有结构元素,无需额外操作。

内容的提问来源于stack exchange,提问作者Kinner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:56:11