在 PostgreSQL 上触发

Trigger on PostgreSQL

我需要一些帮助。我是 SQL 的新手,当我在 Peop table 中使用带有 sex = 'F' 的 INSERT 时,我想要的只是更新列 (est) 的触发器.可能吗? 我的数据库管理系统是 PostgreSQL.

我试过这段代码,但不正确。我得到这个提示:如果你想丢弃 SELECT 的结果,请改用 PERFORM。

CREATE FUNCTION tEst() RETURNS TRIGGER AS $$
   BEGIN
      SELECT * FROM Peop;
      IF Peop.est = 'A' AND Peop.sex = 'F' THEN
         UPDATE Peop SET est = 'B';
      END IF;
      RETURN NULL;
   END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER myTrigger AFTER INSERT ON Peop
FOR EACH ROW
EXECUTE PROCEDURE tEst();

INSERT INTO Peop (name, sex) VALUES ('Mary', 'F');

默认情况下,est 列有 'A' 值。 提前致谢!

这是个简单的任务,但您应该使用 BEFORE INSERT OR UPDATE 行触发器。有可能

  • 获取有关(插入、更新、删除)行中数据的信息。
  • 修改数据,将存储在table.

你的例子:

CREATE FUNCTION tEst() RETURNS TRIGGER AS $$
BEGIN
  IF NEW.est = 'A' AND NEW.sex = 'F' THEN
    NEW.est = 'B';
  END IF;
  RETURN NEW;
END;

CREATE TRIGGER tEst_trg BEFORE INSERT OR UPDATE ON peop
FOR EACH ROW EXECUTE PROCEDURE tEst();

您可以在 related plpgsql documentation

中查看更多示例