Tôi chạy PostgreSQL-9.2.4
Có thể gọi 2 chức năng từ một kích hoạt?
Giả sử tôi có hai hàm cho hai bảng khác nhau được thực thi nếu kích hoạt sau khi kích hoạt:
Kích hoạt:
CREATE TRIGGER start ON system_status FOR EACH ROW
WHEN ((new.event = start_task))
EXECUTE PROCEDURE ...()
Chức năng 1: (Khi tác vụ bắt đầu => xóa mọi tác vụ tiếp theo được gán trước đó cho hệ thống này)
CREATE FUNCTION void_next_task() RETURNS trigger AS $$
BEGIN
DELETE FROM tasks_status ts
WHERE ts.system = NEW.system
AND ts.event = 'next_task';
RETURN NEW;
END;
$$
LANGUAGE plpgsql
Chức năng 2:
(Nếu chèn kết hợp task
và system
đã được trình bày trong bảng => đánh dấu bất kỳ bản ghi nào trước đó với kết hợp này là deleted
)
CREATE FUNCTION void_dup_task() RETURNS trigger AS $$
BEGIN
UPDATE system_status ss
SET deleted = 'TRUE'
WHERE ss.system = NEW.system
AND ss.task = NEW.task
AND ss.deleted IS FALSE;
RETURN NEW;
END;
$$
LANGUAGE plpgsql
Vì vậy, tôi đã kết thúc với các cách sau để giải quyết nó:
- Để có một kích hoạt mà gọi hai chức năng;
- Để có một chức năng thực hiện cập nhật trên một bảng và xóa trên một bảng khác;
- Để có hai kích hoạt chính xác giống nhau và hai chức năng khác nhau;
Trước khi tôi đi trước và thực hiện giải pháp, 3
bạn có thể tư vấn cho tôi nếu giải pháp 1
hoặc hoàn toàn 2
có thể?