Mysql “插入前触发器是否对”中的每一行执行;“在重复密钥更新时插入”;查询

Mysql “插入前触发器是否对”中的每一行执行;“在重复密钥更新时插入”;查询,mysql,triggers,insert,Mysql,Triggers,Insert,这是怎么回事?mysql是否仅在插入或每次插入或更新时在插入前调用触发器,如果要运行的查询如下“ 在重复密钥更新时插入到tSomething值(…) 我想在插入行时根据其他列的值更新列的值。但是,我不希望更新时出现这种行为。将始终执行的查询将是上面提到的查询。为此,我选择了“插入后”。但是,我无法使用插入后触发器作为更新列 设置NEW.score=NEW.score1+NEW.score2 我在某个地方读到,在这种情况下,插入触发器之前允许每次执行上述查询时触发触发器。这是真的吗?如果是,我如何

这是怎么回事?mysql是否仅在插入或每次插入或更新时在插入前调用触发器,如果要运行的查询如下“

在重复密钥更新时插入到tSomething值(…)

我想在插入行时根据其他列的值更新列的值。但是,我不希望更新时出现这种行为。将始终执行的查询将是上面提到的查询。为此,我选择了“插入后”。但是,我无法使用插入后触发器作为更新列

设置NEW.score=NEW.score1+NEW.score2

我在某个地方读到,在这种情况下,插入触发器之前允许每次执行上述查询时触发触发器。这是真的吗?如果是,我如何使用触发器解决此问题

mysql是否仅在插入或每次插入或更新时才在插入触发器后调用

对:

插入前触发器将为每一行激活,然后是插入后触发器或更新前和更新后触发器,具体取决于该行是否有重复键

我不确定你到底想要什么


“然而,我不希望这种行为用于更新“不知怎么搞糊涂了。如果您只有一个AFTER INSERT触发器,那么如果您运行UPDATE语句,它将不会被激发。如果您的语句更新了一行,它将触发一个更新触发器,而不是插入触发器。

我想说明的是,在我的场景中,我只对插入和更新使用上面提到的查询。要实现所需的行为,即根据要插入行中其他列的值更新列的值,我应该在插入之前或之后使用什么?在插入之前,将对上面提到的每个查询“q”执行触发器。但是,只有通过该sql执行的插入才会触发AFTER INSERT。但是使用AFTER INSERT,我无法将列设置为“set NEW.col=…”,因为您无法在AFTER INSERT触发器中设置新的in。