Использование SQLFiddle, PostgreSQL 9.3.1.Синтаксис триггера Postgres
Я учусь определить триггеры в PostgreSQL, и после выполнения некоторых исследований я выяснил следующее:
Триггеры в Postgres отличаются от MYSQL. Где в Postgres вы должны создать функцию, которая RETURNS TRIGGER
, в MySQL вы можете просто создать триггер. Итак, это то, что я придумал:
В отделении сотрудников мы хотим обновить отдел общей зарплаты.
CREATE FUNCTION update_sal() RETURNS TRIGGER AS $$
BEGIN
IF NEW.dno IS NOT NULL THEN
UPDATE Department SET Total_sal = total_sal + NEW.salary
WHERE department.dno = NEW.dno;
END IF;
RETURN NULL;
END;
$$ Language plpgsql;
CREATE TRIGGER updateInsert
AFTER INSERT ON Employee
FOR EACH ROW
EXECUTE PROCEDURE update_sal();
И я получаю следующее сообщение об ошибке:
Schema Creation Failed: ERROR: unterminated dollar-quoted string at or near "$$
BEGIN IF NEW.dno IS NOT NULL THEN UPDATE Department
SET Total_sal = total_sal +NEW.salary WHERE department.dno = NEW.dno":
[Связанный ответ с более подробной информацией и демонстрацией] (http://stackoverflow.com/questions/22747225/exceptions-when-creating-a-trigger-in-postgresql-9-1/22748778#22748778). –