gpt4 book ai didi

mysql - 如何在新行上创建触发器 mysql?

转载 作者:行者123 更新时间:2023-11-30 21:26:43 24 4
gpt4 key购买 nike

我有一个大表,其中 accountID、deviceID、timestamp 作为主键和许多具有不同数据类型的字段。该表非常活跃,从互联网接收数据的 JAVA 服务器每秒添加 50 到 80 行新数据。

现在,当插入具有特定 accountID 和 deviceID 的新行时,我需要克隆一些新行,并在克隆中更改 accountID 字段。

我是 MySQL 触发器的新手。扳机可以自己射击吗?我不需要触发器本身,但由于克隆的行将被添加到同一个表中,所以它可能会发生,我想。

最佳答案

您不能在触发器内执行此操作,因为触发器无法在触发它的表上运行查询。

一种解决方案是创建一个存储过程,您的应用程序会在需要插入数据时调用该过程。然后该过程将插入这两条记录。

所以像这样:

DELIMITER $$

CREATE PROCEDURE my_insert_proc(
IN p_accountID INT,
IN p_deviceID INT,
IN p_timestamp DATETIME,
IN p_col1 VARCHAR(20),
IN p_col2 VARCHAR(50)
)
BEGIN
DECLARE p_accountID_new INT;

-- "regular" insert
INSERT INTO mytable(accountID, deviceID, timestamp, col1, col2)
VALUES(p_accountID, p_deviceID, p_timestamp, p_col1, p_col2);

SET p_accountID_new = ... -- whatever you need
-- "clone" insert
INSERT INTO mytable(accountID, deviceID, timestamp, col1, col2)
VALUES(p_accountID_new, p_deviceID, p_timestamp, p_col1, p_col2);
END
$$

DELIMITER ;

这假设表中在主键列之后有两个附加列。您可以根据您的表结构进行调整。

关于mysql - 如何在新行上创建触发器 mysql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58560090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com