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是否可以给我类似的功能。 非常感谢。
答案 0 :(得分:1)
THX。这似乎是个bug。插入单行时正确调用触发器。 请将完整的报告发送到info@monetdb.org并将个案发送给bugtracker。