powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Trigger и Select
6 сообщений из 6, страница 1 из 1
Trigger и Select
    #35097594
DarkScorpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток!
Подскажите пожалуйста как правельно написать тригер!
Есть такой тригер в БД sqlite
Код: plaintext
1.
2.
3.
CREATE TRIGGER delete_rows BEFORE DELETE ON tab1
BEGIN 
	DELETE FROM tab2 WHERE tab2.id=old.id; 
END;
Подскажите почему этот же тригер не работает в PostgresQL
...
Рейтинг: 0 / 0
Trigger и Select
    #35098458
В PostgreSQL немного другой синтаксис.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE FUNCTION "delete_from_tab2" () RETURNS trigger AS
$body$
DECLARE

BEGIN
 	DELETE FROM test.table2 WHERE table2.id=old.id; 
    RETURN old;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

Код: plaintext
1.
2.
CREATE TRIGGER "delete_rows" BEFORE DELETE 
ON "test"."table1" FOR EACH ROW 
EXECUTE PROCEDURE "public"."delete_from_tab2"();

тынц
...
Рейтинг: 0 / 0
Trigger и Select
    #35622458
Telner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Пожалуйста, направьте на путь истинный.
Есть задача: таблица employee содержит в качестве одного из полей поле last_update_date типа timestamp. Необходимо при обновлении строки таблицы устанавливать в поле last_update_date текущую дату и время если новое значение last_update_date - null. Для этого были попытки создать процедуру и триггер:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE OR REPLACE FUNCTION "SET_EMPLOYEE_LAST_UPDATE_DATE"()
  RETURNS trigger AS
$BODY$BEGIN
    IF NEW.last_update_date IS NULL THEN
      NEW.last_update_date := current_timestamp;
    RETURN NEW;
END  $BODY$
  LANGUAGE 'plpgsql' VOLATILE;


CREATE TRIGGER "SET_EMPLOYEE_LAST_UPDATE_DATE"
  BEFORE UPDATE
  ON employees
  FOR EACH ROW
  EXECUTE PROCEDURE "SET_EMPLOYEE_LAST_UPDATE_DATE"();

если строку "IF NEW.last_update_date IS NULL THEN" убрать - процедура создаётся и работает, в противном случае - нет. Где не прав?
...
Рейтинг: 0 / 0
Trigger и Select
    #35622848
V.V.L.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
END IF поставить забыли
...
Рейтинг: 0 / 0
Trigger и Select
    #35622926
vasos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V.V.L.END IF поставить забыли

+1
...
Рейтинг: 0 / 0
Trigger и Select
    #35623153
Telner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
V.V.L.END IF поставить забыли
+1 Большое спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Trigger и Select
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]