这是程序的流程
sp_test(in_var1, in_var2, in_var3)
begin
if(a record exists) then
call sp_test_update(in_var1, in_var2, in_var3)
else
call sp_test_insert(in_var1, in_var2, in_var3)
end
sp_test_insert(in_var1, in_var2, in_var3)
begin
declare exit handler for sqlexception
begin
rollback
end
start transaction
/*
code block for insert
*/
commit
end
sp_test_update(in_var1, in_var2, in_var3)
begin
declare exit handler for sqlexception
begin
rollback
end
start transaction
/*
code block for update
*/
commit
end
已经尝试制作一个单个过程,但应用程序有一个不同的过程来处理插入和更新,导致存储数据出现问题。
将这种方法放在程序中..
..糟糕的实现?还是练习?还是编码?
..对数据库服务器的性能产生巨大影响?
..在被用户请求淹没时造成瓶颈?
最佳答案
虽然这会起作用,但这不是必需的。 MySQL 已经有 2 种方法来处理这个用例:
替换 http://dev.mysql.com/doc/refman/5.0/en/replace.html
和重复 key 更新http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
因此阅读它们,选择要实现的并用它编写 1 个过程。
关于mysql - 在另一个过程中使用事务调用两个不同的过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28735992/