मेरे पास एक तालिका है, foo
।संबंधित अनुक्रम को हटाए बिना PostgreSQL में एक तालिका को हटाकर
create table tmp_foo (like foo including constraints including defaults including indexes);
अब हर तालिका एक पी id
स्तंभ की तरह लग रहा है: एक त्वरित उन्नयन के प्रयोजनों के लिए/मेरी साइट के तैनात, मैं एक नया टेबल, tmp_foo
, कुछ नए डेटा शामिल होने की कर रही द्वारा किए गए
Column | Type | Modifiers
-------------+-----------------------+--------------------------------------------------------------------------
id | integer | not null default nextval('foo_id_seq'::regclass)
महत्वपूर्ण बिंदु यह है कि दोनों टेबल सटीक समान अनुक्रम पर निर्भर हैं, foo_id_seq
। कोई tmp_foo_id_seq
नहीं है। यह मेरे उद्देश्यों के लिए ठीक लगता है।
इस के बाद, मैं नए डेटा से tmp_foo
भरी हुई और तालिकाओं नाम दिया ताकि tmp_foo
असली foo
के रूप में पदभार संभाल लिया है, और मूल foo
foo_old
बन गया। अब मैं foo_old
ड्रॉप करने का प्रयास करें:
db=> drop table foo_old ;
ERROR: cannot drop table foo_old because other objects depend on it
DETAIL: default for table foo_old column id depends on sequence foo_id_seq
पर्याप्त मेला, id
स्तंभ डिफ़ॉल्ट अभी भी क्रम पर निर्भर करता है।
db=> alter table foo_old alter column id drop default;
यहां किकर है।
db=> drop table foo_old ;
ERROR: cannot drop table foo_old because other objects depend on it
DETAIL: default for table foo column id depends on sequence foo_id_seq
तो foo_old
अब क्रम पर कोई दिखाई निर्भरता है, फिर भी यह अभी भी तालिका के साथ अनुक्रम ड्रॉप करने की कोशिश करता है (और स्पष्ट रूप से होगा क्योंकि नई तालिका इस पर निर्भर नहीं)।
- क्यों अनुक्रम अभी भी जुड़ा हुआ है वर्ष की मेज के साथ :
तो सवाल यह दो भाग है?
- क्या इस तरह के आसपास कोई शामिल नहीं है जिसमें नई तालिका पर नए या अलग अनुक्रम पर निर्भर करती है (यदि भी मदद करेगा)?
(PostgreSQL 8.4 पर)
अहा। वह काम किया। (दरअसल, जब से मैं पागल था, मैंने किसी भी जगह के बजाय मालिक को नई टेबल बनाई।) क्या आपको पता है कि अनुक्रम के मालिक का निरीक्षण कैसे किया जाए? '\ d' इसे नहीं दिखाता है और 'foo_id_seq' से * चुनें, या तो नहीं। –
मुझे नहीं पता कि टिप्पणियों में SQL कथन को सही तरीके से कैसे प्रारूपित किया जाए, इसलिए मैंने अपने उत्तर में कथन जोड़ा –