1

我想创建一个过程(用于在更新时将一个表()的值复制mover_location到另一个表(mover_history)),并希望使用 phppgadmin 在 postgresql 中的触发器上调用它。

这是我尝试过的:

程序 :-

     CREATE OR REPLACE FUNCTION log_mover_location()
     RETURNS trigger AS

    BEGIN

    INSERT INTO mover_history(reg_id,last_seen_lat,last_seen_long,last_seen_location_geog,last_updated_at)
    VALUES(SELECT 

    mover_location.reg_id,mover_location.last_seen_lat,mover_location.last_seen_long,mover_location.last_seen_location_geog,mover_location.last_updated_at FROM mover_location) WHERE mover_history.reg_id = 

    @mover_location.reg_id;

    END;

扳机 :-

CREATE TRIGGER update_mover_history
  AFTER UPDATE
  ON mover_location
  FOR EACH ROW
  EXECUTE PROCEDURE log_mover_location();

触发器创建成功,

但是在执行该过程时它给了我如下错误:

ERROR:  syntax error at or near "BEGIN"
LINE 4: BEGIN
        ^
4

1 回答 1

0

您创建的过程不正确,例如

CREATE OR REPLACE FUNCTION procedure_name()
RETURNS trigger AS
$BODY$
BEGIN
/*----logic----*/
END
$BODY$
LANGUAGE plpgsql 
于 2014-12-11T12:08:12.700 回答