Oracle создает таблицу с комментариями столбца
Есть ли синтаксис комментария столбца, который позволяет мне указать комментарий столбца непосредственно, где я объявляю столбец в инструкции create table (т.е. inline)? 11g spec ничего не упоминает, на другой странице что-то упоминается, но я не мог заставить его работать. Существует способ указать комментарии после создания таблицы, но я думаю, что это раздражает, что комментарий отделен от определения поля. Я ищу что-то вроде этого (что не работает):
create table whatever (
field number(15,0) primary key comment 'primary key generated from sequence pkseq',
...
)
Ответы
Ответ 1
Я боюсь, что "раздражающий" COMMENT ON
синтаксис - единственный способ сделать это. SQL Server, PostgreSQL и DB2 используют один и тот же синтаксис (хотя, насколько мне известно, не существует стандартного синтаксиса ANSI для добавления комментариев к объектам базы данных).
MySQL поддерживает способ работы. Я согласен, что это был бы более хороший механизм, но по моему опыту мало кто использует комментарии вообще, что я сомневаюсь, что Oracle когда-нибудь изменит его.
Ответ 2
Я боюсь, что это можно сделать только после создания таблицы, используя синтаксис comment on column ... is ''
.
Ответ 3
Обходной путь к этому раздражающему синтаксису - также просмотр и редактирование таблиц в Oracles SQLExplorer. Он содержит мастер, который позволяет редактировать комментарии рядом с столбцами. Это даже позволяет легко создавать скрипты alter table.
Моя процедура при редактировании таблиц заключается в том, чтобы вводить изменения в мастере без их фактического выполнения, затем перейдите на вкладку DDL
и извлеките SQL оттуда (как обновление, а не полное создание script) и нажмите cancel on Мастер. Затем я помещаю созданный SQL в SQL script, который я пишу. Только когда я закончил с script, я все выполнил; Я не делаю никаких изменений с самим мастером.
Ответ 4
Тест на 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. Это очень полезно.