2015-10-18 45 views
0

我試圖創建一個查詢,它將檢查它是否存在於一個表中,如果它存在,它將只添加一個數量爲qty否則它會插入從其他表中選擇,在我的情況下​​SQL事務ELSE如果與SELECT

這裏是我的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;

我一直在關注,從這個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 DB:MySQL的(XAMPP)

+1

的MySQL = MS SQL服務器!他們有不同的語法 – lad2025

+0

我正在使用mysql,vb.net和xampp MySQL –

+0

而你遵循一個Sql Server期望它的工作原理? – Steve

回答

0

感謝您的意見,是我不好。我正在關注SQL服務器查詢,而不是專注於MySQL查詢。

但這裏有一個後一些額外的搜索答案(當然與評論員的幫助下) - 感謝

答:

 
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