PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Câu lệnh PostgreSQL IF

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

Không có phần tử thủ tục nào trong SQL chuẩn. IF câu lệnh là một phần của ngôn ngữ thủ tục mặc định PL / pgSQL. Bạn cần tạo một hàm hoặc thực thi một câu lệnh đặc biệt với DO lệnh.

Bạn cần có dấu chấm phẩy (; ) ở cuối mỗi câu lệnh trong plpgsql (ngoại trừ END cuối cùng ).

Bạn cần END IF; ở cuối IF tuyên bố.

Một lựa chọn phụ phải được bao quanh bởi dấu ngoặc đơn:

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

Hoặc:

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

Tuy nhiên, điều này tương đương và nhanh hơn nhiều:

    IF EXISTS (SELECT FROM orders) ...

Thay thế

SELECT bổ sung là không cần thiết. Thao tác này cũng diễn ra tương tự, nhanh hơn:

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

Mặc dù không chắc, các giao dịch đồng thời ghi vào cùng một bảng có thể gây trở ngại. Để hoàn toàn chắc chắn, hãy ghi khóa bảng trong cùng một giao dịch trước khi tiếp tục như đã trình bày.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LỖI:quyền bị từ chối đối với giản đồ user1_gmail_com ở ký tự 46

  2. PostgreSql:Json Array to Rows bằng cách sử dụng liên kết bên

  3. Cách hoạt động của hàm Sign () trong PostgreSQL

  4. Multi-DC PostgreSQL:Thiết lập nút chờ tại một vị trí địa lý khác qua VPN

  5. Tên cột PL / pgSQL giống như biến