2012-05-09 10 views
10

Gibt es eine Spaltenkommentarsyntax, die es mir ermöglicht, einen Spaltenkommentar direkt dort anzugeben, wo ich die Spalte in der create table-Anweisung deklariere (d. H. Inline)? Die 11g spec erwähnt nichts, auf another page ist etwas erwähnt, aber ich konnte es nicht zum Laufen bringen. Es gibt einen Weg zu specify comments after creating the table, aber ich finde es ärgerlich, dass der Kommentar von der Felddefinition getrennt ist. Ich bin auf der Suche nach so etwas wie diese (was nicht funktioniert):Oracle Tabelle mit Spaltenkommentaren erstellen

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

Antwort

14

Ich fürchte, die "nervige" COMMENT ON Syntax ist die einzige Möglichkeit, dies zu tun. SQL Server, PostgreSQL und DB2 verwenden dieselbe Syntax (obwohl ich, soweit ich weiß, keine ANSI-Standardsyntax zum Hinzufügen von Kommentaren zu Datenbankobjekten verwenden).

MySQL unterstützt die Art und Weise, wie Sie möchten, dass es funktioniert. Ich stimme zu, dass es ein schönerer Mechanismus wäre, aber meiner Erfahrung nach benutzen so wenige Leute überhaupt Kommentare, dass ich bezweifle, dass Oracle jemals etwas ändern wird.

+0

Die 'COMMENT ON'-Syntax wird vom SQL-Standard definiert, wenn ich mich nicht irre. –

+1

@a_horse_with_no_name: Mein Verständnis ist. dass COMMENT ON * nicht * Teil des ANSI SQL-Standards ist, obwohl andere Datenbanken es verwenden – APC

5

Ich fürchte, es kann nur nach Tabellenerstellung erfolgen, die comment on column ... is '' Syntax.

4

Ein Workaround zu dieser lästigen Syntax ist auch zum Anzeigen und Bearbeiten der Tabellen in Oracles SQLExplorer. Es enthält einen Assistenten, mit dem Sie die Kommentare direkt neben den Spalten bearbeiten können. Es ermöglicht sogar die einfache Erstellung alter Tabellenskripte.

Meine Vorgehensweise beim Bearbeiten von Tabellen besteht darin, die Änderungen im Wizard einzugeben, ohne sie auszuführen, dann auf die Registerkarte DDL gehen und die SQL von dort abrufen (als Update, nicht vollständiges Skript erstellen) und Abbrechen im Assistenten drücken. Dann lege ich die erstellte SQL in das SQL-Skript, das ich schreibe. Erst wenn ich mit dem Drehbuch fertig bin, führe ich alles aus; Ich mache nie Änderungen mit dem Assistenten selbst.

+0

(Streng gesehen, das ist keine Antwort auf meine genaue Frage, aber es löste meine Schmerzen, die zu dieser Frage ziemlich schön führen.) –

+0

Erstellt der Assistent ein Migrationsskript, das in der Projektrevisionskontrolle gespeichert werden kann? – Roboprog

+0

@Roboprog Natürlich - ich habe die Antwort darüber erweitert. –

0

-Test auf sqlplus (oder ähnlich), aber die Syntax ist wie folgt:

-- 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')); 

Beachten Sie, dass der Kommentar jetzt in sqldeveloper zeigen (oder Toad oder was auch immer env Sie haben), bis Sie die Tabelleneigenschaften sagte wieder öffnen .

Eine ähnliche Syntax kann verwendet werden, um Tabellen, Indizes und materialisierte Ansichten zu kommentieren. [Quelle: https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4009.htm]

Ich verstehe, dass ähnliche Syntax für MySQL und andere existiert, aber es ist nicht richtig ANSI. Es ist jedoch sehr nützlich.