与触发器函数和插入语句sql有关的错误



我正试图完成这个问题:

向给定工作人员的支持票证添加更新。如果票证已关闭,则客户或工作人员都不应再进行更新。

然而,我得到了一个错误,我把我的代码和错误输出放在下面。如有任何帮助,我们将不胜感激。

create or replace function update_ticket()
returns trigger 
language plpgsql
as $$
begin
if old.status = 'closed' then 
RAISE EXCEPTION 'Ticket is closed';
end if;
return new;
end;
$$; 
CREATE TRIGGER update_trigger AFTER UPDATE OR INSERT ON coursework.TicketUpdate
FOR EACH ROW EXECUTE PROCEDURE update_ticket();
--Insert an update to a ticket with values: ticketUpdateID = 10050;
--Message ='Highlight folder for backup and press to trash or right click and choose delete'; -- 
--TicketID = 1010 ; StaffID=2
INSERT INTO TicketUpdate(ticketUpdateID, message, ticketID, StaffID)

VALUES(10050,"突出显示要备份的文件夹并按垃圾桶或右键单击并选择删除",1010,2(;

错误:记录";旧的";没有字段";"状态";

上下文:SQL语句";SELECT old.status="已关闭">

IF 的PL/pgSQL函数public.update_ticket((第3行

SQL状态:42703

您的触发器应用于INSERT,但UPDATE或DELETE上只有一行和旧行,请参阅文档https://www.postgresql.org/docs/12/plpgsql-trigger.html.

此外,还不清楚您要插入的表是否有状态列。如果有,那么您的触发器应该可以进行更新,并且您将需要不同的插入逻辑。

相关内容

  • 没有找到相关文章

最新更新