Halo Saya ingin menghapus semua data di tabel postgresql saya, tetapi bukan tabel itu sendiri. Bagaimana saya bisa melakukan ini?
postgresql
vo1d
sumber
sumber
Jawaban:
Gunakan
TRUNCATE TABLE
perintah.sumber
Isi tabel / tabel dalam database PostgreSQL dapat dihapus dengan beberapa cara.
Menghapus isi tabel menggunakan sql:
Menghapus konten dari satu tabel:
Menghapus konten dari semua tabel bernama:
Menghapus konten dari tabel bernama dan tabel yang mereferensikannya (saya akan menjelaskannya secara lebih rinci nanti dalam jawaban ini):
Menghapus konten tabel menggunakan pgAdmin:
Menghapus konten dari satu tabel:
Menghapus konten tabel dan tabel yang mereferensikannya:
Perbedaan antara delete dan truncate:
Dari dokumentasi:
Bekerja dengan tabel yang direferensikan dari tabel lain:
Saat Anda memiliki database yang memiliki lebih dari satu tabel, tabel tersebut mungkin memiliki hubungan. Sebagai contoh ada tiga tabel:
Dan beberapa data yang disiapkan untuk tabel ini:
Tabel pesanan referensi tabel pelanggan dan tabel loyalty_cards tabel referensi pelanggan. Ketika Anda mencoba untuk TRUNCATE / DELETE DARI tabel yang direferensikan oleh tabel lain (tabel lain memiliki batasan kunci asing ke tabel bernama) Anda mendapatkan kesalahan. Untuk menghapus konten dari ketiga tabel Anda harus memberi nama semua tabel ini (urutannya tidak penting)
atau hanya tabel yang direferensikan dengan kata kunci CASCADE (Anda dapat memberi nama lebih dari satu tabel)
Hal yang sama berlaku untuk pgAdmin. Klik kanan pada tabel pelanggan dan pilih Truncate Cascaded.
sumber
TRUNCATE
adalah bagian dari ANSI SQL, dan didukung di semua DBMS. Saya mengikuti tautannya, dan dokumen tersebut tidak menyebutkan apa pun tentang ekstensi. Mungkin tautannya salah atau ketinggalan zaman?Untuk tabel kecil
DELETE
seringkali lebih cepat dan tidak membutuhkan penguncian yang agresif (untuk beban bersamaan yang berat):Tanpa
WHERE
syarat.Untuk tabel sedang atau lebih besar
TRUNCATE tbl
, gunakan, seperti @Greg diposting.sumber