是否有列注释语法允许我直接指定列注释,我在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',
...
)
答案 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。不过,它非常有用。