15

create tableステートメントで列を宣言する場所(つまりインライン)で列コメントを直接指定できる列コメント構文はありますか?11g仕様には何も記載されていません。別のページに何か記載されていますが、動作させることができませんでした。テーブルの作成後にコメントを指定する方法はありますが、コメントがフィールド定義から分離されているのは面倒だと思います。私はこのようなものを探しています(これは機能しません):

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

4 に答える 4

21

「迷惑な」COMMENT ON構文がこれを行う唯一の方法だと思います。SQL Server、PostgreSQL、およびDB2は同じ構文を使用します(ただし、私が知る限り、データベースオブジェクトにコメントを追加するためのANSI標準構文はありません)。

MySQLは、希望する方法で機能します。私はそれがより良いメカニズムになることに同意しますが、私の経験では、コメントを使用する人はほとんどいないので、Oracleがそれを変更することはないと思います。

于 2012-05-09T12:58:18.440 に答える
5

comment on column ... is ''構文を使用して、テーブルを作成した後にのみ実行できるのではないかと思います。

于 2012-05-09T12:55:49.693 に答える
4

この厄介な構文の回避策は、OracleのSQLExplorerでテーブルを表示および編集することでもあります。列のすぐ横にあるコメントを編集できるウィザードが含まれています。また、テーブル変更スクリプトを簡単に作成することもできます。

テーブルを編集するときの私の手順は、実際に変更を実行せずにウィザードに変更を入力し、そのDDLタブに移動してそこからSQLを取得し(完全な作成スクリプトではなく更新として)、ウィザードでキャンセルを押します。次に、作成したSQLを作成中のSQLスクリプトに挿入します。スクリプトが終了したときにのみ、すべてを実行します。ウィザード自体で変更を加えることはありません。

于 2012-06-29T08:46:14.290 に答える
-1

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ではありません。ただし、これは非常に便利です。

于 2018-02-08T19:25:38.670 に答える