Oracle创建表AS和表注释和列注释

时间:2011-08-02 09:57:15

标签: sql oracle

是否可以创建另一个表作为CREATE TABLE AS并保留列的注释?


CREATE TABLE TABLE1_COPY AS SELECT * FROM TABLE1;

之前的陈述不包括列的评论。因此,TABLE1_COPY没有列的注释。使用USER_COL_COMMENTS是在我新创建的表上重现相同注释的唯一方法吗?

2 个答案:

答案 0 :(得分:13)

  

对于DMBS_METADATA.GET_DDL,它似乎没有创建COMMENT ON   COLUMN语句,除非我遗漏了一些属性。

一种方法是将dbms_metadata.get_dependent_ddl与dbms_metadata.get_ddl结合使用

以下是使用SQL plus创建的示例:

SQL> set long 1000000

SQL> create table t (x number);

Table created.

SQL> comment on column T.X IS 'this is the column comment';

Comment created.

SQL> comment on table T IS 'this is the table comment';

Comment created.

SQL> SELECT dbms_metadata.get_ddl( 'TABLE', 'T' ) || ' ' ||
  2         dbms_metadata.get_dependent_ddl( 'COMMENT', 'T', USER ) the_ddl
  3  FROM dual
  4  /

THE_DDL
--------------------------------------------------------------------------------

  CREATE TABLE "SCOTT"."T"
   (    "X" NUMBER
   ) SEGMENT CREATION DEFERRED
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  TABLESPACE "USERS"

   COMMENT ON COLUMN "SCOTT"."T"."X" IS 'this is the column comment'

   COMMENT ON TABLE "SCOTT"."T"  IS 'this is the table comment'

答案 1 :(得分:0)

这是上述解决方案的一个简单方法的副本,区别在于没有USER提供。 TABLE_NAME是现有表格的位置。

SELECT dbms_metadata.get_ddl( 'TABLE','TABLE_NAME' ) || ' ' || dbms_metadata.get_dependent_ddl( 'COMMENT', 'TABLE_NAME' ) the_ddl FROM dual; 

如果您使用的是Oracle SQL Developer',则无需上述查询,因为您可以直接从' SQL'中获取结果查询。标签本身。 步骤是 -

  1. 单击要复制的表格。
  2. 在右侧面板中,转到' SQL'标签。你会得到相同的结果。