Oracle使用列注释创建表

时间:2012-05-09 12:39:02

标签: sql oracle

是否有列注释语法允许我直接指定列注释,我在create table语句中声明列(即内联)? 11g spec没有提及任何内容,在another page提到了一些内容,但我无法让它发挥作用。有一种方法specify comments after creating the table,但我认为评论与字段定义分开是令人讨厌的。我正在寻找这样的东西(这不起作用):

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

4 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:4)

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

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

答案 3 :(得分:0)

测试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。不过,它非常有用。