我正在把整个数据库从Firebird迁移到PostgreSQL,这不是火箭科学。但我对触发器有严重的问题。特别是火鸟的立场论证。
事实上,我在寻找职位行为。我需要它,但在PostgreSQL中。
这是《火鸟》中的触发器:
此触发器需要首先执行:

/* Trigger: TRG_CFE_ESTOQUE_PROCESSADO */
CREATE OR ALTER TRIGGER TRG_CFE_ESTOQUE_PROCESSADO FOR ITENS_CFE
 BEFORE UPDATE POSITION 0
AS
BEGIN
  IF(NEW.ITE_QTD <> OLD.ITE_QTD)THEN
  BEGIN
    NEW.ITE_ESTOQUE_PROCESSADO = 'N';
  END
END

这个需要在以下情况下执行:
/* Trigger: TRG_CFE_ESTOQUE_EXCLUIDO */
CREATE OR ALTER TRIGGER TRG_CFE_ESTOQUE_EXCLUIDO FOR ITENS_CFE
 BEFORE DELETE POSITION 1
AS
BEGIN
  UPDATE ITENS_CFE
     SET ITE_ESTOQUE_PROCESSADO = 'N'
   WHERE PRO_CODIGO             = OLD.PRO_CODIGO
     AND CFE_CODIGO             = OLD.CFE_CODIGO;
END

现在,我不是在测试它,只是在寻找一种重现预期行为的方法。

最佳答案

再次搜索,我在PostgreSQL Documentation中找到了一些东西:
如果为同一事件定义了同一类型的多个触发器,则将按名称的字母顺序触发它们
我想它会变魔术的。
但这是最好的方法吗?

关于postgresql - 如何将Firebird的触发器迁移到PostgreSQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56992042/

10-12 12:43
查看更多