带有 SELECT 的 SQL 事务 ELSE IF

Posted

技术标签:

【中文标题】带有 SELECT 的 SQL 事务 ELSE IF【英文标题】:SQL Transaction ELSE IF with SELECT 【发布时间】:2015-10-18 17:47:06 【问题描述】:

我正在尝试创建一个查询,它将检查它是否存在于一个表中,如果它存在,它只会将一个添加到数量 qty 否则它将从另一个表中的选择中插入,在我的情况下是 @ 987654323@

这是我目前的 sql。

设置
    事务隔离级别可序列化;开始交易;如果存在(
        选择
            PID
        从
            temp_sales
        在哪里
            条形码 = '4800556410652'
    ) 开始
更新
    temp_sales
放
    数量 = 数量 + 1
在哪里
    条形码 = '4800556410652' END ELSE INSERT INTO temp_sales (
        0,
        (
            选择
                产品.ID,
                products.product_sprice 作为价格,
                1、
                1 * 价格,
                '4800556410652',
                '101',
                '行政'
            在哪里
                条形码 = '4800556410652'
        )
    ) 结束提交事务;

我一直在关注UPDATE if exists else INSERT in SQL Server 2008 的这个 *** 答案,但我没有运气。

mysql 错误 #104 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRANSACTION' at line 1

我做错了什么?

编辑

PL: vb.net 数据库:MySQL(xampp)

【问题讨论】:

MySQL != MS SQL Server。它们有不同的语法 我正在使用 mysql、vb.net 和 xampp MySQL 然后您按照 Sql Server 的示例期望它可以工作? 那我很糟糕,我是事务新手,我只知道 SQL 的基础知识 【参考方案1】:

感谢cmets,我的错。我关注的是 SQL 服务器查询,而不是关注 MySQL 查询。

但这是经过几次额外搜索后的答案(当然是在评论员的帮助下)-谢谢

答案:

插入 temp_sales ( ID、pid、价格、数量、总计、条形码、 pos_id,出纳员 ) 选择 '0', ID 为 pid, products.product_sprice, 1、 products.product_sprice, @条码, '101', '行政' 从 产品 在哪里 条形码 = @barcode 重复键 更新 数量 = 数量 + 1, 总计 = 价格 * 数量

【讨论】:

以上是关于带有 SELECT 的 SQL 事务 ELSE IF的主要内容,如果未能解决你的问题,请参考以下文章

带有条件 CASE 语句的 SQL LEFT JOIN

在 SQL Select 语句中使用 If else

SQL 用单词 else 替换空的 SQL SELECT 将结果发布到 Oracle

ORACLE 中的 PL/SQL、IF-ELSE 或 SELECT DECODE 哪个更好

SQL事务的四种隔离级别

为啥 SELECT 在 SQL Server 中创建未提交的事务?