2013-03-06 2 views
0

Мне нужно создать триггер в postgresql (без каких-либо вызовов функций). У меня есть две таблицы LivesIn (ИДП, имя, провинция) и места (название, область, население, mayorid)Postgresql: Создание триггера

У меня есть следующий код:

CREATE TRIGGER updatePopulation 
AFTER INSERT ON LivesIn 
FOR EACH ROW 
UPDATE Places 
SET NEW.population = OLD.Population + 1 
WHERE LivesIn.name = Places.name AND LiveIn.province = Places.province; 

Я получаю следующее сообщение об ошибке: Psql: /home/2008/uehtes/Desktop/Comp421/comp421_a2_q1.sql:111: оШИБКА: ошибка синтаксиса или вблизи "UPDATE" ЛИНИЯ 5: UPDATE Places.population ^

Любая помощь будет очень ценна.

ответ

1

@Glenn, по-видимому, это не способ сделать это. Вы должны создать функцию и вызвать ее в триггере. Пример:

CREATE FUNCTION updatePop() RETURNS TRIGGER AS $updatePopulation$ 
DECLARE 
    name1 varchar(30); 
    name2 varchar(30); 
BEGIN 
    IF (TG_OP = 'INSERT') THEN 
     name1 = NEW.name; 
     name2 = NEW.province; 
     UPDATE Place 
     SET population = population + 1 
     WHERE name1 = Place.name AND name2 = Place.province; 
END IF; 
RETURN NULL;  
END; 
$updatePopulation$ LANGUAGE plpgsql; 

CREATE TRIGGER updatePopulation 
AFTER INSERT ON LivesIn 
FOR EACH ROW 
EXECUTE PROCEDURE updatePop(); 
Смежные вопросы