gpt4 book ai didi

mysql - 编写条件插入语句

转载 作者:可可西里 更新时间:2023-11-01 07:33:35 24 4
gpt4 key购买 nike

update A set x = '0' where [condition];

如果不满足 where 条件,则不会发生更新。

据此,我想在另一个表中触发插入,但前提是已完成更新 - 即 ROW_COUNT() > 0。

我怎样才能在一个请求中做到这一点?

我试过这个:

update A set x = '0' where [condition];

if row_count() > 0 then

insert into [...];

end if;

这会导致错误。

附言:

这个问题纯粹是为了在一个数据库请求中执行更新和条件插入的可能性。通过使用准备好的语句来确保 SQL 注入(inject)安全。

最佳答案

创建一个存储过程,如:

DELIMITER $$

CREATE PROCEDURE updateA (c1 varchar)
BEGIN
declare rows_affected integer;

UPDATE a SET x = '0' WHERE col1 = c1;

SELECT row_count() INTO rows_affected;

IF rows_affected > 0 THEN BEGIN
INSERT INTO .....
END; END IF;

END $$

DELIMITER ;

或者使用 AFTER UPDATE 触发器

DELIMITER $$

CREATE TRIGGER au_a_each AFTER UPDATE ON a FOR EACH ROW
BEGIN
INSERT INTO b (x,a_id) VALUES (new.x, new.id);
END $$

DELIMITER ;

关于mysql - 编写条件插入语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6242804/

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