Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Триггеры. Предупреждение: нет незавершенной транзакции COMMIT  [new]
Oda412
Member

Откуда:
Сообщений: 42
Здравствуйте!
Создаю таблицы t1 и t2 - с одинаковыми полями. Хочу создать триггер, который срабатывает при добавлении новой записи в таблицу t2 и вводит в таблицу t1 необходимые значения.

CREATE TABLE t1(f1 INT,f2 INT,f3 INT);
CREATE TABLE t2(f1 INT,f2 INT,f3 INT);

CREATE OR REPLACE TRIGGER tr
AFTER INSERT ON t2
FOR EACH ROW
BEGIN
  INSERT INTO t1(f1,f2,f3) VALUES(5,5,5);
END;


При выполнении данного кода появляется ошибка:
"ПРЕДУПРЕЖДЕНИЕ: нет незавершённой транзакции
COMMIT"

Помогите, пожалуйста
1 апр 21, 15:05    [22302990]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры. Предупреждение: нет незавершенной транзакции COMMIT  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1280
Oda412,

и где вы такой синтаксис создания триггера нашли в postgresql?
https://www.postgresql.org/docs/current/sql-createtrigger.html

И почему не видите текст про синтаксическую ошибку?
1 апр 21, 15:39    [22303002]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры. Предупреждение: нет незавершенной транзакции COMMIT  [new]
Oda412
Member

Откуда:
Сообщений: 42
Melkij,
Спасибо за правильную ссылку. Сработало в таком виде:

1) Создала триггерную функцию:
CREATE OR REPLACE FUNCTION p()
RETURNS TRIGGER
LANGUAGE plpgsql
AS
$$
BEGIN
INSERT INTO t1(f1,f2,f3) VALUES(7,7,7);
RETURN NEW;
END;
$$


2) Создала триггер:
CREATE TRIGGER tr
AFTER INSERT ON t2
FOR EACH ROW
EXECUTE PROCEDURE p();


3) Ввела новую запись в таблицу t2:
INSERT INTO t2(f1,f2,f3) VALUES (11,11,11);


В t1 добавилась нужная запись.

Благодарю вас!
1 апр 21, 16:45    [22303028]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить