mysql - 在另一个过程中使用事务调用两个不同的过程

标签 mysql database stored-procedures transactions procedure

这是程序的流程

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/

相关文章:

javascript - PHP MySQL插入多维关联数组从数组键构建查询

php - 分页在排序中不起作用

php - 选择两个表并设置排序优先级

c# - 使用 SQL Server 数据库文件

c# - 使用 Linq-to-SQL 访问存储过程

mysql - 关于私有(private) MySQL 实例和 WordPress 的问题

mysql - MySQL 中 'SET' 两个表之间的多列更新

mysql - 最适合这项工作的 DBMS 是什么?

java - 从 Oracle 函数调用 Java 函数

MYSQL存储过程查询回退逻辑