Di SQLite, Anda dapat menggunakan IF NOT EXISTS
klausa dari CREATE TABLE
pernyataan untuk memeriksa apakah tabel atau tampilan dengan nama yang sama sudah ada di database sebelum membuatnya.
Membuat tabel tanpa klausa ini biasanya akan menghasilkan kesalahan jika tabel dengan nama yang sama sudah ada di database. Tetapi saat menggunakan IF NOT EXISTS
klausa, pernyataan tidak berpengaruh jika tabel sudah ada dengan nama yang sama.
Contoh
Berikut ini contoh untuk didemonstrasikan:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
Di sini, 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 tabel atau tampilan yang disebut t1
.
Periksa bahwa Tabel Sekarang Sudah Ada
Kita dapat menanyakan sqlite_schema
tabel untuk memeriksa apakah tabel tersebut sekarang ada:
SELECT EXISTS (
SELECT
name
FROM
sqlite_schema
WHERE
type='table' AND
name='t1'
);
Hasil:
1
Dalam hal ini saya mendapatkan 1
, yang berarti bahwa tabel tersebut memang ada.
Coba Buat Tabel Lagi
Jika kita mencoba membuat tabel itu lagi:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
Kami tidak mendapatkan kesalahan:
sqlite> CREATE TABLE IF NOT EXISTS t1 ( c1 INT, c2 VARCHAR(10) ); sqlite>
Kami tidak mendapatkan apa-apa.
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: table t1 already exists
Perhatikan bahwa IF NOT EXISTS
klausa tidak memeriksa struktur/definisi tabel. Ini hanya memeriksa bahwa tidak ada tabel atau tampilan yang ada dengan nama yang sama yang kami coba berikan ke tabel yang kami buat.
Dengan kata lain, hanya karena tabel dengan nama itu sudah ada, bukan berarti ia memiliki definisi yang benar.
Juga, kesalahan masih ditampilkan jika tabel tidak dapat dibuat karena indeks yang ada, meskipun IF NOT EXISTS
klausa ditentukan.