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,将个别案例发送至错误追踪器。
在 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,将个别案例发送至错误追踪器。