Di MySQL, Anda dapat menggunakan IF NOT EXISTS
klausa dari CREATE TABLE
pernyataan untuk memeriksa apakah tabel dengan nama yang sama sudah ada di database atau belum.
Jika tabel tidak ada, itu akan dibuat. Jika sudah ada, tidak akan dibuat.
Contoh
Ini berjalan seperti ini:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
Dimana t1
adalah nama tabel, dan semua yang berada di antara tanda kurung adalah definisi tabel (yaitu kolom, dll).
Dalam hal ini, tabel hanya akan dibuat jika belum ada yang bernama t1
.
Periksa bahwa Tabel Sekarang Sudah Ada
Kita dapat menggunakan sys.table_exists()
prosedur untuk memeriksa apakah tabel sekarang ada:
CALL sys.table_exists('test', 't1', @table_type);
SELECT @table_type;
Hasil:
+-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+
Di sini, test
adalah nama database, dan t1
adalah nama tabel yang saya periksa keberadaannya.
Dalam hal ini, hasilnya adalah BASE TABLE
yang berarti tabel tersebut memang ada.
Ini hanyalah salah satu dari banyak cara untuk memeriksa apakah tabel ada di MySQL.
Coba Buat Tabel Lagi
Sekarang jika kita mencoba membuat tabel itu lagi:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
Kami tidak mendapatkan kesalahan:
Query OK, 0 rows affected, 1 warning (0.00 sec)
Tapi kami mendapat peringatan.
Jadi mari kita periksa peringatannya:
SHOW WARNINGS;
Hasil:
+-------+------+---------------------------+ | Level | Code | Message | +-------+------+---------------------------+ | Note | 1050 | Table 't1' already exists | +-------+------+---------------------------+
Seperti yang diharapkan, ini memberi tahu kita bahwa tabel sudah ada.
Tanpa IF NOT EXISTS
Klausa
Inilah yang terjadi jika kita tidak menggunakan IF NOT EXISTS
klausa ketika mencoba membuat tabel yang sudah ada:
CREATE TABLE t1 (
c1 INT,
c2 VARCHAR(10)
);
Kali ini kami mendapatkan kesalahan:
ERROR 1050 (42S01): Table 't1' already exists
Penting untuk diperhatikan bahwa IF NOT EXISTS
klausa tidak memeriksa struktur/definisi tabel. Ini hanya memeriksa bahwa tidak ada tabel yang ada dengan nama yang sama yang kami coba berikan ke tabel yang kami buat.
Dengan kata lain, hanya karena tabel dengan nama tersebut sudah ada, bukan berarti tabel tersebut memiliki definisi yang benar.