更新完成后触发器更改所有行
表名transitions
,我想更改任何更新后所有行的值。更新完成后触发器更改所有行
我正在使用以下触发器,它只更改我正在进行更新的行。
CREATE TRIGGER signaturetrigger BEFORE UPDATE ON `transactions` FOR EACH ROW
BEGIN
SET New.signature = '288';
END
我试图改变所有的行signature = 288
,我怎么能修改触发以archieve是什么?我认为使用FOR EACH ROW
就足够了。
在此先感谢。
您可以使用后更新触发器与update
声明:
CREATE TRIGGER signaturetrigger AFTER UPDATE ON `transactions`
FOR EACH ROW
BEGIN
UPDATE transactions
SET New.signature = '288';
END;
但这却似乎是一个很奇怪的事情。
考虑一个替代方案:只需在表中添加一个UpdatedAt
列并更新该行中的签名。然后,当你想要最新的签名使用:
select signature
from transactions
order by UpdatedAt desc
limit 1;
上transactions(UpdatedAt, signature)
索引将使这相当迅速。而且,更新将比更新所有行快得多,速度更快。
感谢您的答复,更新似乎很逻辑,但我有以下错误'不能更新表'事务'存储的函数/因为它已经被调用这个存储的函数/触发器的语句使用,所以触发' –
@Borja。 。 。即使*更新触发器之后,这是否正确?无论如何,你可以在答案的后半部分遵循建议。 –
您无法使用其触发器更新同一表(您只能更改该新的原始表,而不能更改整个表) –
如果您想在更新单个行时更新表中的每一行,您正在做的事情非常错误。 – Phylogenesis
_I'm试图改变所有的行到_你的意思是表中的所有行?或所有涉及的行? – Alex