2014-12-01 45 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。