2012-05-09 45 views
10

¿Existe una sintaxis de comentario de columna que me permita especificar un comentario de columna directamente donde declaro la columna en la declaración create table (es decir, en línea)? El 11g spec no menciona nada, en another page se menciona algo, pero no pude hacerlo funcionar. Hay una forma de specify comments after creating the table, pero creo que es molesto que el comentario esté separado de la definición del campo. Busco algo como esto (que no funciona):Oracle crear tabla con comentarios de columna

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

Respuesta

14

Me temo que la sintaxis "molesta" COMMENT ON es la única forma de hacerlo. SQL Server, PostgreSQL y DB2 usan la misma sintaxis (aunque, hasta donde yo sé, no existe una sintaxis estándar ANSI para agregar comentarios a los objetos de la base de datos).

MySQL es compatible con la forma en que le gustaría que funcione. Estoy de acuerdo en que sería un mecanismo más agradable, pero en mi experiencia tan poca gente usa comentarios en absoluto que dudo que Oracle alguna vez lo cambie.

+0

La sintaxis 'COMMENT ON' está definida por el estándar SQL si no me equivoco. –

+1

@a_horse_with_no_name: Según tengo entendido. ese COMENTARIO EN * no * es parte del estándar ANSI SQL, aunque otras bases de datos lo usan – APC

5

Me temo que sólo puede hacerse después de la creación de la tabla, usando la sintaxis comment on column ... is ''.

4

Una solución alternativa a esta sintaxis molesta es también ver y editar las tablas en Oracles SQLExplorer. Contiene un asistente que le permite editar los comentarios justo al lado de las columnas. Incluso permite la creación sencilla de scripts alter table.

Mi procedimiento al editar tablas es ingresar los cambios en el asistente sin ejecutarlos, luego ir a su pestaña DDL y recuperar el SQL de allí (como actualización, no crear completo script) y presionar cancelar en el asistente. Luego coloco el SQL creado en el script SQL que estoy escribiendo. Solo cuando termino con el guion lo ejecuto todo; Nunca hago ningún cambio con el asistente en sí.

+0

(Estrictamente visto, esta no es una respuesta a mi pregunta exacta, pero resolvió mi dolor que condujo a esa pregunta muy bien) –

+0

¿El asistente crea un script de migración que se puede guardar en el control de revisión del proyecto? – Roboprog

+0

@Roboprog Por supuesto, extendí la respuesta sobre eso. –

0

prueba en sqlplus (o similar), pero la sintaxis es la siguiente:

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

Tenga en cuenta que el comentario mostrará ahora en SQLDeveloper (o sapo o lo que sea env que tiene) hasta que se vuelve a abrir dichas propiedades de la tabla .

Se puede usar una sintaxis similar para anotar tablas, índices y vistas materializadas. [fuente: https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4009.htm]

Entiendo la sintaxis similar existe para MySQL y otros, pero no es ANSI apropiado. Es muy útil, sin embargo.

Cuestiones relacionadas