2014-12-01 50 views
0

我在PostgreSQL中写了这个查询:PostgreSQL的1对多的触发程序

CREATE OR REPLACE FUNCTION pippo() RETURNS TRIGGER AS $$ 
BEGIN 
    CHECK (NOT EXISTS (SELECT * FROM padre WHERE cod_fis NOT IN (SELECT padre FROM paternita))); 
END; 
$$ LANGUAGE plpgsql; 

它返回:

达到或接近检查语法错误。

我写了这段代码,因为我必须实现两个表之间的1..n链接。

+0

函数的期望结果是什么? – Andreas 2014-12-01 19:03:47

+0

@Andreas:也许你可以先告诉他他的语法错误在哪里。 – 2014-12-01 19:06:48

+0

你可以发布表结构和一些样本记录吗?很难看出你想要做什么...... – mlinth 2014-12-01 19:09:06

回答

1

这里不能使用CHECK。 CHECK用于表和列约束。

两个进一步指出:

  • 如果这应该是一个语句级触发器的约束,我猜你实际上是在寻找IF ... THEN RAISE EXCEPTION 'message'; END IF;
    (如果没有,你可能要扩大和澄清你想要做什么。)
  • 函数应该返回NEW,OLD或NULL。