Postgresql 不删除,触发函数出错?

Postgresql 不删除,触发函数出错?,postgresql,triggers,sql-delete,procedure,Postgresql,Triggers,Sql Delete,Procedure,我试图创建一个触发器,一旦删除一名员工(表员工),将该员工作为SupportRep的客户(表客户)将被分配给前员工的“上司”(称为ReportsTo)。我创建了这个触发函数,当我尝试删除一名员工时,查询成功,但没有真正删除任何人 CREATE OR REPLACE FUNCTION REEMPLAZAR() RETURNS TRIGGER AS $CAMBIO$ BEGIN UPDATE "Customer" SET "SupportRepId" = old."ReportsT

我试图创建一个触发器,一旦删除一名员工(表员工),将该员工作为SupportRep的客户(表客户)将被分配给前员工的“上司”(称为ReportsTo)。我创建了这个触发函数,当我尝试删除一名员工时,查询成功,但没有真正删除任何人

CREATE OR REPLACE FUNCTION REEMPLAZAR() RETURNS TRIGGER AS $CAMBIO$

BEGIN
    UPDATE "Customer"
    SET "SupportRepId" = old."ReportsTo"
    WHERE "SupportRepId" IS NULL;
    RETURN NEW;
END;
$CAMBIO$ 
LANGUAGE plpgsql;
这将是触发因素:

CREATE TRIGGER ac_supp BEFORE DELETE 
    ON "Employee" FOR EACH ROW 
    EXECUTE PROCEDURE REEMPLAZAR();
当我跑步时:

 DELETE FROM public."Employee"
 WHERE "EmployeeId" = 9;

它应该执行成功,但当我检查Employee表时,我试图删除的员工仍然在那里,而且Customers表上没有任何更新

你为什么不这么做

UPDATE "Customer"
    SET "SupportRepId" = old."ReportsTo"
    WHERE "SupportRepId" IS NULL;

我不确定解决问题的逻辑是否正确,但这似乎是一个简单得多的解决方案,并且不需要查询触发器定义的表。

我更新了代码,不知道这是否是您的意思?无论如何,谢谢你,你是对的,这是一个更简单的解决方案。但仍然存在同样的问题:(