2013-08-05 29 views
10

Tôi có một chức năng kích hoạt:Làm thế nào tôi có thể lấy tên bảng trong một hàm kích hoạt PostgreSQL?

CREATE OR REPLACE FUNCTION "trigger_deleteUsers"() 
RETURNS trigger AS 
$BODY$ 
BEGIN 
    INSERT INTO "DeletedEntities" ("uuidKey", "dateCreated", "dateModified", "dateSynced", "username", "entityName") 
     VALUES (OLD."uuidKey", OLD."dateCreated", OLD."dateModified", "dateSynced", OLD."username", 'Users'); 
    RETURN NULL; 
END; 
$BODY$ 
LANGUAGE plpgsql; 

CREATE TRIGGER "deleteUsers" AFTER DELETE ON "Users" FOR EACH ROW EXECUTE PROCEDURE "trigger_deleteUsers"(); 

này làm việc cho "Người dùng" bảng. Mỗi khi tôi xóa một hàng khỏi bảng "Người dùng", cơ sở dữ liệu chèn một hàng với ("uuidKey", "dateCreated", "dateModified", "dateSynced", "username", "entityName") vào bảng "DeletedEntities" Tôi sẽ sử dụng cho mục đích đồng bộ hóa sau.

Các tác phẩm trên. Đây là vấn đề của tôi, tôi có khoảng hai chục bảng. Tôi biết tôi cần TẠO TRIGGER trên mỗi bảng, nhưng tôi không muốn phải tạo một chức năng kích hoạt tùy chỉnh cho mỗi bảng. Điều duy nhất sẽ thay đổi từ hàm đầu tiên ở trên là giá trị cuối cùng trong câu lệnh INSERT bên trong hàm; thay vì 'Người dùng', nó sẽ là "Ledgers" hoặc "Journal" hoặc bất kỳ thứ gì.

Trong chức năng kích hoạt PostgreSQL, làm cách nào để có được tên của bảng mà hàng OLD thuộc về quá?

Trả lời

Các vấn đề liên quan