जवाबों:
TRUNCATE TABLEकमांड का उपयोग करें ।
PostgreSQL डेटाबेस में तालिका / तालिकाओं की सामग्री को कई तरीकों से हटाया जा सकता है।
Sql का उपयोग करके तालिका सामग्री हटाना:
एक तालिका की सामग्री हटाना:
TRUNCATE table_name;
DELETE FROM table_name;
सभी नामित तालिकाओं की सामग्री हटाना:
TRUNCATE table_a, table_b, …, table_z;
उनके नाम के संदर्भ में नामित तालिकाओं और तालिकाओं की सामग्री को हटाना (मैं इस उत्तर में बाद में अधिक विवरण में समझाऊंगा):
TRUNCATE table_a, table_b CASCADE;
PgAdmin का उपयोग करके तालिका सामग्री हटाना:
एक तालिका की सामग्री हटाना:
Right click on the table -> Truncate
इसके संदर्भ में तालिका और तालिकाओं की सामग्री हटाना:
Right click on the table -> Truncate Cascaded
हटाएं और टुकड़े टुकड़े में अंतर:
प्रलेखन से:
DELETE उन पंक्तियों को हटा देता है जो निर्दिष्ट तालिका से WHERE खंड को संतुष्ट करती हैं। यदि WHERE क्लॉज अनुपस्थित है, तो प्रभाव तालिका में सभी पंक्तियों को हटाने के लिए है। http://www.postgresql.org/docs/9.3/static/sql-delete.html
TRUNCATE एक PostgreSQL एक्सटेंशन है जो एक तालिका से सभी पंक्तियों को हटाने के लिए एक तेज़ तंत्र प्रदान करता है। TRUNCATE जल्दी से तालिकाओं के एक सेट से सभी पंक्तियों को हटा देता है। यह प्रत्येक तालिका पर एक अयोग्य DELETE के समान प्रभाव डालता है, लेकिन चूंकि यह वास्तव में तालिकाओं को स्कैन नहीं करता है इसलिए यह तेज है। इसके अलावा, यह डिस्क स्थान को तुरंत बाद में ले लेता है, बजाय इसके बाद के VACUUM ऑपरेशन की आवश्यकता होती है। यह बड़े तालिकाओं पर सबसे उपयोगी है। http://www.postgresql.org/docs/9.1/static/sql-truncate.html
अन्य तालिका से संदर्भित तालिका के साथ कार्य करना:
जब आपके पास डेटाबेस होता है जिसमें एक से अधिक टेबल होते हैं तो टेबल का शायद संबंध होता है। एक उदाहरण के रूप में तीन तालिकाओं हैं:
create table customers (
customer_id int not null,
name varchar(20),
surname varchar(30),
constraint pk_customer primary key (customer_id)
);
create table orders (
order_id int not null,
number int not null,
customer_id int not null,
constraint pk_order primary key (order_id),
constraint fk_customer foreign key (customer_id) references customers(customer_id)
);
create table loyalty_cards (
card_id int not null,
card_number varchar(10) not null,
customer_id int not null,
constraint pk_card primary key (card_id),
constraint fk_customer foreign key (customer_id) references customers(customer_id)
);
और इन तालिकाओं के लिए कुछ तैयार डेटा:
insert into customers values (1, 'John', 'Smith');
insert into orders values
(10, 1000, 1),
(11, 1009, 1),
(12, 1010, 1);
insert into loyalty_cards values (100, 'A123456789', 1);
टेबल ऑर्डर संदर्भ टेबल ग्राहक और टेबल लॉयल्टी_कार्ड्स संदर्भ टेबल ग्राहक। जब आप उस तालिका से TRUNCATE / DELETE करने का प्रयास करते हैं, जो अन्य तालिका / s (दूसरी तालिका / नाम की तालिका के लिए विदेशी कुंजी बाधा है) द्वारा संदर्भित है, तो आपको एक त्रुटि मिलती है। सभी तीन तालिकाओं से सामग्री को हटाने के लिए आपको इन सभी तालिकाओं को नाम देना होगा (आदेश महत्वपूर्ण नहीं है)
TRUNCATE customers, loyalty_cards, orders;
या सिर्फ़ वह तालिका जिसे CASCADE कुंजी शब्द के साथ संदर्भित किया गया है (आप केवल एक से अधिक टेबल का नाम दे सकते हैं)
TRUNCATE customers CASCADE;
वही pgAdmin के लिए लागू होता है। ग्राहकों की तालिका पर राइट क्लिक करें और Truncate Cascaded चुनें।
TRUNCATEANSI SQL का हिस्सा है, और सभी DBMS में समर्थित है । मैंने लिंक का अनुसरण किया, और दस्तावेज़ में एक्सटेंशन के बारे में कुछ भी उल्लेख नहीं है। शायद लिंक गलत है या पुराना है?
के लिए छोटे टेबल DELETEअक्सर तेजी से होता है और (भारी समवर्ती लोड के लिए) कम आक्रामक लॉकिंग की जरूरत है:
DELETE FROM tbl;
बिना किसी WHEREशर्त के।
के लिए मध्यम या बड़ा टेबल, साथ जाना TRUNCATE tbl, जैसे @Greg तैनात।