作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
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/
我是一名优秀的程序员,十分优秀!