2016-07-27 1 views
1

есть простой «ПОСЛЕ UPDATE» Например спускового:MonetDB ПЕРЕД ВСТАВИТЬ Триггеры просто не работает, и мне нужна hlep чтобы разобраться в документации MonetDB

https://www.monetdb.org/Documentation/SQLreference/Triggers

Это один работает, но я пытался изменить это к BEFORE INSERT, и для каждой полосы отвода:

создать таблицу:

CREATE TABLE t1 (id INT, name VARCHAR(1024));

Вставить некоторые значения:

INSERT INTO t1 VALUES(10, 'monetdb');

INSERT INTO t1 VALUES(20, 'monet');

создать триггер:

CREATE TRIGGER test5 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t1 VALUES(4, 'update_when_statement_true');

Вставьте некоторые вещи, чтобы проверить функциональность триггера:

INSERT INTO t1 SELECT * FROM t1;

Выберите некоторые вещи, чтобы посмотреть, что случилось:

SELECT * FROM t1; Результаты:

+------+---------+ | id | name | +======+=========+ | 10 | monetdb | | 20 | monet | | 10 | monetdb | | 20 | monet | +------+---------+

Так в основном ничего не произошло, что я могу сказать с триггером. Я пробовал всевозможные вещи в триггере типа BEGIN ATOMIC ... END, вызывая процедуру, которая вставляет эту строку, используя функции и ничего, что я нашел, сработало.

Какая плохая часть заключается в том, что это даже не близко к тому, что я хочу выполнить с помощью триггера insert, это просто видно, могу ли я заставить его работать. То, что я действительно хочу сделать, это поймать строку и вставить ее в другую таблицу, если мне не нравятся некоторые из значений. Я делаю это в postgres уже, и я оцениваю, может ли MonetDB дать мне аналогичную функциональность. Большое спасибо.

ответ

0

Thx. Это похоже на ошибку. Триггер правильно вызывается при вставке одной строки. Просьба выслать полный отчет на [email protected] и отдельные случаи в bugtracker.