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

Hàm kích hoạt PostgreSQL 9.3 để chèn vào bảng với tên được tham số hóa

CREATE FUNCTION log_roll_test()
  RETURNS trigger AS
$func$
BEGIN
   EXECUTE format('INSERT INTO %I SELECT ($1).*'
                , to_char(NEW.updt_ts, '"log"WW'))   -- child table name
   USING NEW;
   RETURN NULL;
END
$func$ LANGUAGE plpgsql;

Bạn không thể tham chiếu NEW bên trong chuỗi truy vấn. NEW hiển thị trong thân hàm, nhưng không hiển thị bên trong EXECUTE Môi trường. Giải pháp tốt nhất là chuyển các giá trị trong USING mệnh đề.

Tôi cũng đã thay thế to_char(NEW.updt_ts, '"log"WW') tương đương cho tên bảng. to_char() nhanh hơn và đơn giản hơn ở đâ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. Chèn nhiều hàng trong một bảng dựa trên số trong bảng khác

  2. Tự động kiểm tra bảo mật cho PostgreSQL

  3. SqlAlchemy Postgres JSON làm thế nào để lọc bằng toán tử dấu chấm hỏi?

  4. Di chuyển Rails 3:boolean (mysql vs postgreSQL)

  5. Nhóm và đếm các sự kiện trên mỗi khoảng thời gian, cộng với tổng số lần chạy