Thursday 15 January 2015

sql - Move oracle Column ID -


मान लीजिए मैं इस तालिका है:

 छवि विवरण यहाँ दर्ज करें

क्या मैं ऐसा करना चाहते हैं के लिए कदम / 10 के लिए STATUS_DT के स्तंभ आईडी बदल सकते हैं और समायोजित करने के लिए है बाकी इस तरह से नीचे की ओर:

  कॉलम का नाम | आईडी ... STAT_ID | 10 STATUS_DT | 10 CREA_BY | 11 CREA_DT | 12 LAST_UPD_BY | 13 LAST_UPD_DT | 14   

क्या कोई भी प्रश्न ( वैकल्पिक तालिका ) है, ताकि मैं तालिका को पुनः बनाने के बिना इसे प्राप्त कर सकता हूं? <

सिद्धांत में, आप

  1. स्थानांतरित करने के लिए कॉलम का नाम बदल सकते हैं
  2. नया जोड़ें कॉलम सूची के अंत में कॉलम
  3. पुराने कॉलम से नए कॉलम में डेटा कॉपी करें
  4. पुराने कॉलम ड्रॉप करें

    व्यवहार में, डी पुराने तालिका का नाम बदलें और इसे नए कॉलम ऑर्डर के साथ बनाया। यदि एक ऑनलाइन reorg ...

    संपादित करें के साथ, होने की जरूरत: उदाहरण के लिए:

      01 INVOICE_REQUEST_ID ... 09 STAT_ID 10 CREA_BY 11 CREA_DT 12 LAST_UPD_BY 13 LAST_UPD_DT 14 STATUS_DT   

    तब चरण 1 पर) कॉलम का नाम बदल ले जाया जा रहे हैं:

      परिवर्तन तालिका My_table RENAME स्तंभ crea_by tmp_crea_by करने के लिए; वैकल्पिक तालिका my_table REIME COLUMN crea_dt to tmp_crea_dt; ALTER TABLE my_table RENAME COLUMN last_upd_by to tmp_last_upd_by; वैकल्पिक तालिका my_table RENAME COLUMN last_upd_dt to tmp_last_upd_dt; 01 INVOICE_REQUEST_ID ... 09 STAT_ID 10 TMP_CREA_BY 11 TMP_CREA_DT 12 TMP_LAST_UPD_BY 13 TMP_LAST_UPD_DT 14 STATUS_DT   

    चरण 2) स्तंभ सूची के अंत में कॉलम जोड़ें:

     <कोड > वैकल्पिक तालिका my_table RENAME COLUMN crea_by to tmp_crea_by; वैकल्पिक तालिका my_table REIME COLUMN crea_dt to tmp_crea_dt; ALTER TABLE my_table RENAME COLUMN last_upd_by to tmp_last_upd_by; वैकल्पिक तालिका my_table RENAME COLUMN last_upd_dt to tmp_last_upd_dt; 01 INVOICE_REQUEST_ID ... 09 STAT_ID 10 TMP_CREA_DT 12 TMP_LAST_UPD_BY 13 TMP_LAST_UPD_DT 14 STATUS_DT 15 CREA_BY 16 CREA_DT 17 LAST_UPD_BY 18 LAST_UPD_DT   

    चरण 3) पुराने कॉलम से डेटा को नए कॉलम में कॉपी करें: <पूर्व> अद्यतन करें my_table SET tmp_crea_by = crea_by, tmp_crea_dt = crea_dt, tmp_last_upd_by = last_upd_by, tmp_last_upd_dt = last_upd_dt;

    चरण 4) पुराने कॉलम ड्रॉप करें:

      ALTER TABLE my_table SET UNUSED (tmp_crea_by, tmp_crea_dt, tmp_last_upd_by, tmp_last_upd_dt); वैकल्पिक तालिका my_table ड्रॉप न किए गए कॉलमों; 01 INVOICE_REQUEST_ID ... 09 STAT_ID 10 STATUS_DT 11 CREA_BY 12 CREA_DT 13 LAST_UPD_BY 14 LAST_UPD_DT   

    यदि डेटा प्रासंगिक नहीं है, तो आप कदमों को छोड़ सकते हैं 1) नाम बदलें और चरण 3) कॉपी करें स्क्रिप्ट दिखाई देगा:

      परिवर्तन तालिका My_table सेट अप्रयुक्त (crea_by, crea_dt, last_upd_by, last_upd_dt); वैकल्पिक तालिका my_table ADD (crea_by VARCHAR2 (30)); वैकल्पिक तालिका my_table ADD (crea_dt DATE); वैकल्पिक तालिका my_table ADD (अंतिम _upd_ VARCHAR2 (30)); वैकल्पिक तालिका my_table ADD (last_upd_dt DATE); वैकल्पिक तालिका my_table ड्रॉप न किए गए कॉलमों;    

No comments:

Post a Comment