2012-07-03 57 views
32

我正在爲我的Web應用程序使用Oracle 11g。我想添加一個列和一個評論到現有的表。我能做到這一點很容易與下面的命令SQL在單個命令中添加表和註釋表

ALTER TABLE product ADD product_description VARCHAR2(20) 

COMMENT ON COLUMN product.product_description 
    IS 'This is comment for the column'; 

但我想上面做單指令任務。我在網上搜索了一個命令,在一個命令中添加一列和註釋,但我找不到。我想知道這是否可能。任何建議將不勝感激。

+0

這是在Oracle上做的唯一方法 – mcha

回答

23

不,你不能。

你沒有理由需要。這是一次性操作,因此只需要一秒或兩秒的時間來實際鍵入和執行。

如果您要在Web應用程序中添加列,這更多地表明您的數據模型存在缺陷,因爲您不需要這樣做。


爲了響應您的評論,評論是列屬性;它可能似乎所以但在幕後Oracle將此存儲爲對象的屬性。

SQL> desc sys.com$ 
Name          Null? Type 
----------------------------------------- -------- ---------------------------- 
OBJ#          NOT NULL NUMBER 
COL#            NUMBER 
COMMENT$           VARCHAR2(4000) 

SQL> 

該列是可選的,並且sys.col$不包含評論信息。

我假設,我不知道,這是爲了只有一個系統處理評論而不是多個。

+1

感謝@Ben的回答。你是對的,這是一次性操作,需要額外的時間來執行。但是我仍然在尋找任何語法來將它們融合在一起。因爲我認爲評論與列的任何其他屬性一樣。我想知道如果你可以添加列的數據類型(必須),限制(可選),那麼爲什麼不評論? –

+0

@SunilChavan,我已經稍微更新了我的答案。是的,看起來確實如此,但事實並非如此。 – Ben

+0

用腳本@Sven將所有內容都擊碎?不知道與部署任何其他代碼有什麼不同 - 這比將DDL更改爲「替換」更容易,因此您可以覆蓋以前的內容。 – Ben

9

您可以使用以下查詢更新或創建已創建的表的評論。

語法:

COMMENT ON COLUMN Tablename.Column name IS 'text'; 

例子:

COMMENT ON COLUMN TAB_SAMBANGI.MY_COLUMN IS 'This is a comment on my column...'; 
+0

只有這個Oracle-DB嗎?還是標準SQL? – asgs

+0

更多信息[COMMENT ON COLUMN](https://my.vertica.com/docs/7.1.x/HTML/Content/Authoring/SQLReferenceManual/Statements/COMMENT/COMMENTONCOLUMN.htm) – mhplur

-2

添加註釋爲EMPLOYEE表的兩個不同列:

COMMENT ON EMPLOYEE 
    (WORKDEPT IS 'see DEPARTMENT table for names', 
    EDLEVEL IS 'highest grade level passed in school') 
+0

不幸的是,它不適用於我 :-( –

0

查詢與註釋添加列有:

alter table table_name 
add("NISFLAG" NUMBER(1,0)) 

comment on column "ELIXIR"."PRD_INFO_1"."NISPRODGSTAPPL" is 'comment here' 

commit;