Mysql 如果使用SELECT,则执行SQL事务

Mysql 如果使用SELECT,则执行SQL事务,mysql,transactions,Mysql,Transactions,我正在尝试创建一个查询,它将检查它是否存在于表中,如果存在,它将只向quantity quantity中添加一个,否则它将从selecting from other表中插入,在我的例子中是temp_sales 这是我到目前为止的sql SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN TRANSACTION; IF EXISTS ( SELECT pid FROM

我正在尝试创建一个查询,它将检查它是否存在于表中,如果存在,它将只向quantity quantity中添加一个,否则它将从selecting from other表中插入,在我的例子中是temp_sales

这是我到目前为止的sql

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN TRANSACTION; IF EXISTS ( SELECT pid FROM temp_sales WHERE barcode = '4800556410652' ) BEGIN UPDATE temp_sales SET qty = qty + 1 WHERE barcode = '4800556410652' END ELSE INSERT INTO temp_sales ( 0, ( SELECT products.ID, products.product_sprice as price, 1, 1 * price, '4800556410652', '101', 'admin' WHERE barcode = '4800556410652' ) ) END COMMIT TRANSACTION; 我一直在遵循这个答案,但我没有运气

MySQL错误104 1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“TRANSACTION”附近使用的正确语法

我做错了什么

编辑

PL:vb.net
DB:MySQLxampp

谢谢你的评论,我的错。我关注的是SQL server查询,而不是MySQL查询

当然,在评论员的帮助下,经过几次额外的搜索之后,这里有了答案——谢谢

答复:


MySQL!=MS SQL Server。他们有不同的语法,我使用mysql、vb.net和xampp mysql,而你遵循一个Sql Server的示例,希望它能工作?我的缺点是,我不熟悉事务,我只知道Sql的基本知识 INSERT into temp_sales ( ID, pid, price, qty, total, barcode, pos_id, teller ) SELECT '0', ID as pid, products.product_sprice, 1, products.product_sprice, @barcode, '101', 'admin' FROM products WHERE barcode = @barcode ON DUPLICATE KEY UPDATE qty = qty + 1, total = price * qty