आम तौर पर किसी तालिका को डुप्लिकेट करने का सबसे तेज़ तरीका बस है:
CREATE TABLE table2 AS SELECT * FROM table1;
समानांतर INSERT तेजी से हो सकते हैं, लेकिन केवल बहुत तेज डिस्क सबसिस्टम (जब कई ड्राइव पर डेटा को इंटरलेय किया जाता है) के साथ। अन्यथा यह धीमा हो जाएगा।
एक बार जब आप संशोधन table2
कर लेते हैं, तो यह नया नाम ले सकता है:
BEGIN;
DROP TABLE table1;
ALTER TABLE table2 RENAME TO table1;
COMMIT;
DROP TABLE
आदेश है जो एक तरह से आप की आशा कर सकते हैं में समवर्ती पाठकों को प्रभावित करता है एक विशेष ताला, की जरूरत है:
DROP
अन्य लेनदेन से खत्म करने के लिए मेज पर किसी भी लंबित पढ़ने का इंतजार करेंगे।
- इस बीच में उस तालिका को पढ़ने का प्रयास करने वाले किसी भी नए लेन-देन को प्रतीक्षा में रखा जाएगा, और तब विफल हो जाएगा क्योंकि मूल
table1
अब मौजूद नहीं है। त्रुटि कैसा दिखेगा "कर सकता OID साथ नहीं खुला संबंध OID "
दूसरी समस्या से बचने के लिए, आप का नाम बदलने सकता है table1
करने के लिए old_table1
यह छोड़ने के बजाय, और उसके बाद ही बाद में लेन-देन, के बाहर छोड़ जब इन पाठकों इसके साथ किया जाता है। तो ऊपर का क्रम बन जाएगा:
BEGIN;
ALTER TABLE table1 RENAME TO old_table1;
ALTER TABLE table2 RENAME TO table1;
COMMIT;
...
DROP TABLE old_table1;