Dapatkah seseorang memberi tahu saya jika ada perbedaan di antara keduanya
DROP IF EXISTS [TABLE_NAME]
DROP [TABLE_NAME]
Saya menanyakan hal ini karena saya menggunakan template JDBC di aplikasi web MVC saya. Jika saya menggunakan DROP [TABLE_NAME]
kesalahan mengatakan bahwa Table ada. Dan jika saya menggunakannya DROP IF EXISTS [TABLE_NAME]
mengatakan tata bahasa SQL yang buruk. Bisakah seseorang membantu?
sql
drop-table
AbdulAziz
sumber
sumber
Jawaban:
Sintaks SQL standar adalah
IF EXISTS
bukan standar; platform yang berbeda mungkin mendukungnya dengan sintaks yang berbeda, atau tidak mendukungnya sama sekali. Dalam PostgreSQL, sintaksnya adalahYang pertama akan melempar kesalahan jika tabel tidak ada, atau jika objek database lain bergantung padanya. Paling sering, objek database lain akan menjadi referensi kunci asing, tetapi mungkin ada yang lain juga. (Tampilan, misalnya.) Yang kedua tidak akan melempar kesalahan jika tabel tidak ada, tetapi masih akan melempar kesalahan jika objek database lain bergantung padanya.
Untuk menjatuhkan tabel, dan semua objek lain yang bergantung padanya, gunakan salah satunya.
Gunakan CASCADE dengan sangat hati-hati.
sumber
CASCADE
dalam blok transaksi (BEGIN
...COMMIT
). Dengan cara ini jelas bagaimana database akan terpengaruh sebelum berpotensi menghancurkan sekelompok data yang mungkin tidak Anda inginkan.Bukan itu yang ditanyakan langsung. Tetapi mencari cara melakukan drop table dengan benar, saya menemukan pertanyaan ini, karena saya kira banyak orang lain juga melakukannya.
Dari SQL Server 2016+ Anda dapat menggunakan
Untuk SQL Server <2016 yang saya lakukan adalah berikut ini untuk tabel permanen
Atau ini, untuk meja sementara
sumber
Anda lupa
table
sintaksisnya:yang menjatuhkan meja.
Menggunakan
memeriksa apakah tabel ada sebelum menjatuhkannya.
Jika ada, itu akan jatuh.
Jika tidak, tidak ada kesalahan yang akan terjadi dan tidak ada tindakan yang dilakukan.
sumber
pertama-tama memeriksa apakah tabel ada, jika itu menghapus tabel sementara
menghapus tanpa memeriksa, jadi jika tidak ada keluar dengan kesalahan
sumber
Jika tidak ada tabel dengan nama seperti itu,
DROP
gagal dengan kesalahan sementaraDROP IF EXISTS
tidak melakukan apa-apa.Ini berguna jika Anda membuat / memodifikasi database Anda dengan skrip; dengan cara ini Anda tidak perlu memastikan secara manual bahwa versi tabel sebelumnya dihapus. Anda hanya perlu melakukan
DROP IF EXISTS
dan melupakannya.Tentu saja, mesin DB Anda saat ini mungkin tidak mendukung opsi ini, sulit untuk mengatakan lebih banyak tentang kesalahan dengan informasi yang Anda berikan.
sumber
drop some_table if exists;
dan tabelnyasome_table
tidak ada.DROP
perlu Anda menentukan jenis objek (TABLE
dalam hal ini)