在插入TRIGGER之前的MonetDB只是不工作,我需要一些hlep来解决它

时间:2016-07-27 20:47:26

标签: triggers monetdb

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

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,调用一个插入该行的过程,使用函数而我发现没有任何效果。

不好的部分是,这与我想用前插入触发器完成的工作差不多,这只是看看我是否可以让它工作。 如果我不喜欢某些值,那么我真正想要做的就是捕获一行并将其插入另一个表中。 我已经在postgres中做了这个,我正在评估MonetDB是否可以给我类似的功能。 非常感谢。

1 个答案:

答案 0 :(得分:1)

THX。这似乎是个bug。插入单行时正确调用触发器。 请将完整的报告发送到info@monetdb.org并将个案发送给bugtracker。