SQL для добавления столбца и комментария в таблице в одиночной команде
Я использую Oracle 11g для своего веб-приложения. Я хочу добавить столбец и комментарий в существующую таблицу. Я могу сделать это легко с помощью следующих команд
ALTER TABLE product ADD product_description VARCHAR2(20)
и
COMMENT ON COLUMN product.product_description
IS 'This is comment for the column';
Но я хочу сделать выше задачу в одиночной команде. Я искал в Интернете команду для добавления столбца и комментариев в одной команде, но я не мог найти. Интересно, возможно ли это. Любые предложения будут высоко оценены.
Ответы
Ответ 1
Нет, вы не можете.
Нет причин, по которым вам нужно будет. Это одноразовая операция, поэтому для фактического ввода и выполнения требуется только вторая или вторая секунды.
Если вы добавляете столбцы в свое веб-приложение, это скорее указывает на недостаток вашей модели данных, поскольку вам не нужно это делать.
В ответ на ваш комментарий, что комментарий является атрибутом столбца; это может показаться так, но за кулисами Oracle хранит это как атрибут объекта.
SQL> desc sys.com$
Name Null? Type
----------------------------------------- -------- ----------------------------
OBJ# NOT NULL NUMBER
COL# NUMBER
COMMENT$ VARCHAR2(4000)
SQL>
Столбец не является обязательным и sys.col$
не содержит информации о комментариях.
Я предполагаю, что я не знаю, что это было сделано, чтобы иметь только одну систему обработки комментариев, а не несколько.
Ответ 2
Вы можете использовать нижеприведенный запрос для обновления или создания комментариев к уже созданной таблице.
СИНТАКСИС:
COMMENT ON COLUMN Tablename.Column name IS 'text';
Пример:
COMMENT ON COLUMN TAB_SAMBANGI.MY_COLUMN IS 'This is a comment on my column...';
Ответ 3
Запрос на добавление столбца с комментарием:
alter table table_name
add( "NISFLAG" NUMBER(1,0) )
comment on column "ELIXIR"."PRD_INFO_1"."NISPRODGSTAPPL" is 'comment here'
commit;
Ответ 4
Добавить комментарии для двух разных столбцов таблицы EMPLOYEE:
COMMENT ON EMPLOYEE
(WORKDEPT IS 'see DEPARTMENT table for names',
EDLEVEL IS 'highest grade level passed in school' )