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

Cách sử dụng EXECUTE FORMAT ... USING trong hàm postgres

Hàm của bạn có thể trông giống như thế này trong Postgres 9.0 trở lên:

CREATE OR REPLACE FUNCTION dummytest_insert_trigger()
  RETURNS trigger AS
$func$
DECLARE
   v_partition_name text := quote_ident('dummyTest');  -- assign at declaration
BEGIN
   IF NEW.datetime IS NOT NULL THEN
      EXECUTE 
      'INSERT INTO ' || v_partition_name || ' VALUES ($1,$2)'
      USING NEW.id, NEW.datetime;              
   END IF;                    

   RETURN NULL;  -- You sure about this?
END
$func$  LANGUAGE plpgsql;

Giới thiệu về RETURN NULL :

  • Để bỏ qua kết quả BEFORE TRIGGER của PostgreSQL?

Tôi khuyên bạn không nên sử dụng các mã nhận dạng trường hợp hỗn hợp. Với định dạng format( .. %I ..) hoặc quote_ident() , bạn sẽ nhận được một bảng có tên "dummyTest" , mà bạn sẽ phải báo giá gấp đôi cho phần còn lại của sự tồn tại của nó. Có liên quan:

  • Tên cột PostgreSQL có phân biệt chữ hoa chữ thường không?

Sử dụng chữ thường thay thế:

quote_ident('dummytest')

Thực sự không có ích gì khi sử dụng SQL động với EXECUTE miễn là bạn có tên bảng tĩnh. Nhưng đó có lẽ chỉ là một ví dụ đơn giản?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tính đa hình trong bảng cơ sở dữ liệu SQL?

  2. Chức năng của Window:last_value (ORDER BY ... ASC) giống như last_value (ORDER BY ... DESC)

  3. date_trunc khoảng thời gian 5 phút trong PostgreSQL

  4. Chia cột thành nhiều hàng trong Postgres

  5. Làm cách nào để ghi các truy vấn PostgreSQL?