繁体   English   中英

Oracle使用列注释创建表

[英]Oracle create table with column comments

是否有一个列注释语法,允许我直接指定列注释,我在create table语句中声明列(即内联)? 11g规范没有提到任何东西,在另一页上提到了一些东西,但我无法让它工作。 有一种方法可以在创建表后指定注释 ,但我认为将注释与字段定义分开是令人讨厌的。 我正在寻找这样的东西(不起作用):

create table whatever (
 field number(15,0) primary key comment 'primary key generated from sequence pkseq',
 ...
)

我担心“恼人的” COMMENT ON语法是这样做的唯一方法。 SQL Server,PostgreSQL和DB2使用相同的语法(尽管据我所知,没有用于向数据库对象添加注释的ANSI标准语法)。

MySQL支持您希望它的工作方式。 我同意这将是一个更好的机制,但根据我的经验,很少有人使用评论,我怀疑甲骨文将改变它。

我担心它只能在创建表之后才能完成,使用comment on column ... is ''comment on column ... is ''语法。

这种烦人的语法的解决方法也是查看和编辑Oracles SQLExplorer中的表。 它包含一个向导,允许您编辑列旁边的注释。 它甚至可以轻松创建alter table脚本。

编辑表时我的过程是在向导中输入更改而不实际执行它们,然后转到其DDL选项卡并从那里检索SQL(作为更新,而不是完整的创建脚本)并按向导上的取消。 然后我将创建的SQL放入我正在编写的SQL脚本中。 只有当我完成脚本时,我才会执行所有操作; 我永远不会对向导本身做任何改变。

测试sqlplus(或类似),但语法如下:

-- assuming you have privileges
COMMENT ON COLUMN SCHEMA1.TABLE1.COL1 
  IS 'My comment'

-- then you can double check like this
SELECT * FROM all_col_comments WHERE 
  (OWNER, TABLE_NAME, COLUMN_NAME) 
  IN (('SCHEMA1','TABLE1','COL1'));

请注意,在您重新打开表的属性之前,注释现在将显示在SQLDeveloper(或Toad或您拥有的任何内容)中。

类似的语法可用于注释表,索引和物化视图。 [来源: https//docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4009.htm]

我理解MySQL和其他语法存在类似的语法,但它不是合适的ANSI。 不过,它非常有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM