MonetDB BEFORE INSERT TRIGGERs 只是不工作,我需要一些 hlep 来解决它

MonetDB BEFORE INSERT TRIGGERs are just not working and I need some hlep to sort it out

在 MonetDB 文档中有一个简单的 "AFTER UPDATE" 触发器示例:

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

那个行得通,但我试图将其更改为 BEFORE INSERT,并且 FOR EACH ROW:

创建 table:

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 一些东西看看发生了什么:

SELECT * FROM t1; 结果:

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

所以基本上没有发生我可以用触发器判断的事情。 我在触发器中尝试了各种方法,例如 BEGIN ATOMIC...END,调用插入该行的过程,使用函数,但我发现没有任何效果。

糟糕的是,这与我想要使用插入前触发器完成的目标还差得远,这只是看看我是否可以让它工作。 我真正想做的是抓住一行并将其插入另一个 table 如果我不喜欢某些值。 我已经在 postgres 中这样做了,我正在评估 MonetDB 是否可以给我类似的功能。 非常感谢。

谢谢。这似乎是一个错误。插入单行时会正确调用触发器。 请将完整报告发送至 info@monetdb.org,将个别案例发送至错误追踪器。