表增刪改欄位,及基表改變等相關操作對檢視、同義詞、儲存過程的影響

lusklusklusk發表於2017-07-05
oracle無法像mysql那樣直接修改欄位順序,oracle修改欄位順序需要修改資料欄位並重啟


以下語句在USER1使用者下或SYSTEM使用者下執行都是一樣的結果

修改欄位名,oracle不支援一條alert命令修改多個欄位名
ALTER TABLE USER1.TABLE1 RENAME COLUMN hid1 TO hid ; 

修改欄位型別,修改一個欄位或多個欄位型別 
ALTER TABLE USER1.TABLE1 MODIFY hid NUMBER(11) ;  
ALTER TABLE USER1.TABLE1 MODIFY (hid NUMBER(10),HNA varchar(20),HADD varchar(20)) ; 

新增欄位,新增一個欄位或多個欄位
ALTER TABLE USER1.TABLE1 ADD ADDRESS VARCHAR2(10)  ;
ALTER TABLE USER1.TABLE1 ADD (ADDRESS2 VARCHAR2(10) ,ADDRESS3 VARCHAR2(10),ADDRESS4 VARCHAR2(10) );  

刪除欄位,刪除一個欄位或多個欄位,刪除多個欄位時不能有關鍵字COLUMN
ALTER TABLE USER1.TABLE1 DROP COLUMN ADDRESS  ; 
ALTER TABLE USER1.TABLE1 DROP  (ADDRESS2, ADDRESS3,ADDRESS4) ; 




1.增加欄位
select檢視時發現:檢視沒有自動獲取到新增的欄位
select同義詞時發現:同義詞自動獲取到了新增的欄位

2.刪除欄位
select檢視時發現:如果檢視引用了該欄位,檢視報錯
                  如果檢視沒有引用該欄位,檢視正常
select同義詞時發現:同義詞自動刪除了欄位

3.修改欄位長度或型別
檢視、同義詞、儲存過程都沒有任何影響

4.drop表
檢視、同義詞、儲存過程都失效了,即dba_objects.status='INVALID'


以上說明:
增減欄位對同義詞沒有任何影響,因為同義詞的建立語句為CREATE SYNONYM URSR1.SYNONYM_NAME FOR URSRX.TABLE_NAME
增欄位對檢視沒有影響,減欄位對檢視的影響,只以第一次建立檢視時引用的欄位有關,就算第一次是select * from table,檢視真實的建立語法也是select column1,column2,column3.. from table

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2141612/,如需轉載,請註明出處,否則將追究法律責任。

相關文章