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

Kích hoạt SQL Trigger chỉ khi một người dùng cụ thể cập nhật hàng

Trong các phiên bản Postgres gần đây, có when mà bạn có thể sử dụng để kích hoạt trình kích hoạt có điều kiện. Bạn có thể sử dụng nó như:

... when (old.* is distinct from new.*) ...

Tôi không 100% cái này sẽ hoạt động (không thể kiểm tra atm):

... when (current_user = 'foo') ...

(Nếu không, hãy thử đặt nó vào một khối if trong plpgsql của bạn.)

http://www.postgresql.org/docs/current/static /sql-createtrigger.html

(Ngoài ra còn có bản cập nhật [before|after] update of [col_name] nhưng tôi có xu hướng thấy nó ít hữu ích hơn vì nó sẽ kích hoạt ngay cả khi giá trị của cột vẫn giữ nguyên.)

Thêm ghi chú bổ sung này, thấy rằng câu trả lời của @ CraigRinger làm nổi bật những gì bạn đang làm ...

Tôi nghĩ việc cố gắng thiết lập bản sao tổng thể giữa Salesforce và Postgres bằng cách sử dụng các trình kích hoạt có điều kiện là một giấc mơ viển vông. Chỉ cần quên nó đi ... Sẽ còn nhiều điều hơn thế nữa:bạn sẽ cần phải khóa dữ liệu phù hợp ở cả hai đầu (điều này sẽ không nhất thiết phải khả thi theo một cách hợp lý), quản lý các bế tắc kết quả (mà có thể không tự động được phát hiện) và xử lý dữ liệu xung đột.

Tỷ lệ thành công của bạn để đạt được điều này với một đội nhỏ là khoảng 0 - đặc biệt nếu kỹ năng Postgres của bạn ở mức đầu tư thời gian vào việc đọc hướng dẫn sẽ trả lời câu hỏi của chính bạn. Bạn có thể đặt cược một cách an toàn rằng một người nào đó có năng lực hơn nhiều ở Salesforce hoặc một số cửa hàng SQL lớn (ví dụ như cửa hàng Craig làm việc cho) được coi là giống nhau, và hoặc thất bại thảm hại hoặc loại trừ nó.

Hơn nữa, tôi muốn nhấn mạnh rằng việc triển khai nhân rộng hiệu quả, đồng bộ, đa chủ thể là không một vấn đề đã được giải quyết. Bạn đọc đúng: không đã giải quyết. Chỉ một vài năm trước, làm điều đó hoàn toàn không đủ giải quyết tốt để đưa nó vào lõi Postgres. Vì vậy, bạn không có tác phẩm nghệ thuật nào hoạt động hiệu quả để làm cơ sở cho tác phẩm của bạn và lặp lại.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm sum XPath hay fn:sum có được triển khai trong PostgreSQL XPath không?

  2. Mã hóa văn bản UTF-8 / Unicode với RPostgreSQL

  3. Truy cập từ xa Postgresql không có mục nhập pg_hba.conf cho máy chủ

  4. làm thế nào để thu thập nhiều giá trị dưới dạng một chuỗi duy nhất trong postgres?

  5. Laravel where điều kiện - truy vấn pgsql