PostgreSQL:触发器过程

PostgreSQL: Trigger Procedures

我的 postgresql 数据库中有这两个 table:

CREATE TABLE credit
(
  id serial NOT NULL,
  id_emp integer,
  amount double precision,
  refund double precision,
  rest double precision,
  stat integer,
  CONSTRAINT credit_pkey PRIMARY KEY (id)
)

还有这个:

CREATE TABLE emp_with_credit
(
  id serial NOT NULL,
  id_emp integer,
  stat integer,
  CONSTRAINT emp_with_credit_pkey PRIMARY KEY (id)
)

我想创建一个程序触发器ON UPDATE来完成这项工作:
当我更新一行 credit table 我必须检查其余是否 = 0 然后:设置信用 table = 0 的 stat 列并获得 [=更新行的 38=] 并在 credit.id_emp = emp_with_credit.id_emp
[=28 时设置 emp_with_credit table = 0 的统计列=] 编辑:
到目前为止我做了什么:

CREATE FUNCTION credit_stamp() RETURNS trigger AS $credit_stamp$
    BEGIN
        IF NEW.rest = 0 THEN
        NEW.stat = 0;
    END IF;
        RETURN NEW;
    END;
$emp_stamp$ LANGUAGE plpgsql;

CREATE TRIGGER credit_stamp BEFORE UPDATE ON credit
    FOR EACH ROW EXECUTE PROCEDURE credit_stamp();

这很好用,但仍然是第二部分,我必须在 credit.id_emp = emp_with_credit.id_emp.[=19= 时设置 emp_with_credit table 的 stat 列 = 0 ]

您的触发器中没有 UPDATE 语句。

CREATE FUNCTION credit_stamp()
  RETURNS TRIGGER AS $$
BEGIN
  IF NEW.rest = 0
  THEN
    UPDATE emp_with_credit SET stat = 0 WHERE emp_with_credit.id_emp = NEW.id_emp
    NEW.stat = 0;
  END IF;
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;