PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pernyataan JIKA PostgreSQL

DO
$do$
BEGIN
   IF EXISTS (SELECT FROM orders) THEN
      DELETE FROM orders;
   ELSE
      INSERT INTO orders VALUES (1,2,3);
   END IF;
END
$do$

Tidak ada elemen prosedural dalam SQL standar. IF pernyataan adalah bagian dari bahasa prosedural default PL/pgSQL. Anda perlu membuat fungsi atau menjalankan pernyataan ad-hoc dengan DO perintah.

Anda memerlukan titik koma (; ) di akhir setiap pernyataan di plpgsql (kecuali untuk END final akhir ).

Anda membutuhkan END IF; di akhir IF pernyataan.

Sub-pilihan harus diapit oleh tanda kurung:

    IF (SELECT count(*) FROM orders) > 0 ...

Atau:

    IF (SELECT count(*) > 0 FROM orders) ...

Ini setara dan jauh lebih cepat:

    IF EXISTS (SELECT FROM orders) ...

Alternatif

SELECT additional tambahan tidak diperlukan. Ini melakukan hal yang sama, lebih cepat:

DO
$do$
BEGIN
   DELETE FROM orders;
   IF NOT FOUND THEN
      INSERT INTO orders VALUES (1,2,3);
   END IF;
END
$do$

Meskipun tidak mungkin, transaksi bersamaan yang menulis ke tabel yang sama dapat mengganggu. Untuk benar-benar yakin, tulis-kunci tabel dalam transaksi yang sama sebelum melanjutkan seperti yang ditunjukkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SETELAH LOGON(Oracle) memicu di PostgreSQL dengan ekstensi – login_hook

  2. Tabel dan indeks vs. HDD dan SSD

  3. PostgreSQL:cara menginstal ekstensi plpythonu

  4. Menerapkan Switchover/Switchback di PostgreSQL 9.3.

  5. 4 Cara Menemukan Baris yang Mengandung Karakter Huruf Besar di PostgreSQL