PostgreSQL上的触发器

PostgreSQL上的触发器,sql,postgresql,stored-procedures,triggers,Sql,Postgresql,Stored Procedures,Triggers,我需要一些帮助。我是SQL新手,当我在Peop表中使用INSERT withsex='F'时,我想要的一切都是更新列(est)的触发器。可能吗? 我的数据库管理系统是PostgreSQL 我已经试过这个代码,但是不对。我得到了这个提示:如果你想放弃SELECT的结果,就用PERFORM代替 CREATE FUNCTION tEst() RETURNS TRIGGER AS $$ BEGIN SELECT * FROM Peop; IF Peop.est = 'A'

我需要一些帮助。我是SQL新手,当我在
Peop
表中使用INSERT with
sex='F'
时,我想要的一切都是更新列(
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'
值。
提前谢谢

这是一项简单的任务,但您应该在插入或更新行触发器之前使用
。有可能

  • 获取相关(插入、更新、删除)行中的数据信息
  • 修改将存储在表中的数据
你的例子是:

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();
您可以在中看到更多示例