Pab*_*ada 3 postgresql triggers
我在PGAdminIII上创建了一个触发器,我想删除在另一个表上有外键的行.但是我收到一个语法错误,我找不到问题所在:
CREATE TRIGGER clienteDelete
BEFORE DELETE ON cliente
FOR EACH ROW
BEGIN
DELETE FROM contacto WHERE contacto.id = OLD.contacto_idcontacto;
END;
ERROR: syntax error at or near "BEGIN"
LINE 4: BEGIN
^
********** Error **********
ERROR: syntax error at or near "BEGIN"
SQL state: 42601
Character: 68
Run Code Online (Sandbox Code Playgroud)
我不习惯Postgres上的触发器语法,但这是我根据SQL标准所知道的.任何帮助都会得到很高的评价
例如,Postgresql触发器有一些限制
PostgreSQL只允许为触发的动作执行用户定义的函数.
因此,要完成您想要的任务,您需要定义一个函数并使触发器触发.这样的事情应该有效:
CREATE FUNCTION clienteDelete() RETURNS TRIGGER AS $_$
BEGIN
DELETE FROM contacto WHERE contacto.id = OLD.contacto_idcontacto;
RETURN OLD;
END $_$ LANGUAGE 'plpgsql';
Run Code Online (Sandbox Code Playgroud)
触发器:
CREATE TRIGGER delete_contacto
BEFORE DELETE ON cliente
FOR EACH ROW
EXECUTE PROCEDURE clienteDelete();
Run Code Online (Sandbox Code Playgroud)
我不是Postgresql专家,但是期待上面的代码不完美.
| 归档时间: |
|
| 查看次数: |
4419 次 |
| 最近记录: |