2016-10-02 58 views
0

內我有一個表Receipt與columnsn如何引用列在同一個表

| ORNUMBER | Description | Quantity | Date | 

我想引用我的QuantityDateDescription

比如我放棄了列Description兩個QuantityDate也將下降

什麼是腳本是什麼?謝謝!。

+0

我不完全確定你在問什麼。當你刪除另一個(並且永遠不會,因爲你可以很容易地手動完成),沒有命令會自動刪除(整個)列。丟掉一列意味着將它從桌面上全部刪除,你真的是這個意思嗎?你是否想要在修改行時刪除行(例如,設置爲「null」)?或者,當你將'Description'設置爲'null'時,你是否想設置值'Quantity'和'Date'也是'null'?也許你可以添加一些示例數據來描述你想要做的事情。 – Solarflare

+0

我想你想要在null時自動清零數量和日期,是不是?我認爲[觸發](https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000931.html)是什麼可以幫助你你的任務 – siarheib

回答

0


嗨,
下面是可以使用的程序,

BEGIN 
ALTER TABLE Receipt DROP COLUMN Description; 
END; 

DECLARE 
    del_columns INTEGER; 
BEGIN 
    SELECT COUNT(*) 
     INTO del_columns 
     FROM dba_tab_columns 
     WHERE OWNER = 'user_name' 
     AND table_name = 'Receipt' 
     AND column_name = 'Description' 
IF(del_columns = 0) 
THEN 
    EXECUTE IMMEDIATE 'ALTER TABLE Receipt DROP column Quantity, Date; 
END IF; 
END; 

Explination

  • 在首先開始的語句,描述列被刪除
  • 在第二語句,聲明的臨時整數值del_column
  • 從系統表,表名和列名被聲明爲條件,並顯示

  • 計數如果計數爲0,則說明列不可用,那麼其他的其他兩個列將被刪除。如果你得到1,則該列可以和其他兩列不會被刪除

  • 您還可以使用ALL_TAB_COLUMNS表,從該用戶除了提供所有的表名where條件它是超級用戶
  • 確保你提供你的所有者名稱在哪裏條件
相關問題