2014-09-05 62 views
0

我有一個名爲broodjes-service數據庫,每當我運行此查詢它:DELETE語句犯規拿表名稱是否正確

DELETE FROM order_items WHERE order_id = 42 

我得到這個錯誤:

#1146 Table 'broodjes-service.i' doesn't exist 

雖然我」 m確定該表存在,使用此表結構:

enter image description here

問題

我想從一個名爲order_items表中刪除一行,但它需要的表名i出於某種原因。

問題

  • 爲何需要表名i
  • 我怎樣才能讓這個我的查詢將實際上從特定表中的一行?

我有triggers爲表order_items

這一個是刪除的東西時:

enter image description here

UPDATE orders o 
    INNER JOIN (SELECT i.order_id id, SUM(i.quantity * p.price) total_price 
     FROM `orders-items` i 

    INNER JOIN products p ON p.id = i.products_id 
     AND i.order_id = old.order_id) t ON t.id = o.id 

SET o.total_price = t.total_price 

插入扳機

enter image description here

INNER JOIN (SELECT i.order_id id, SUM(i.quantity * p.price) total_price 
FROM `orders-items` i 

INNER JOIN products p ON p.id = i.products_id AND i.order_id = new.order_id) t ON t.id = o.id 

SET o.total_price = t.total_price 

更新觸發

enter image description here

UPDATE orders o INNER JOIN (SELECT i.order_id id, SUM(i.quantity * p.price) total_price FROM `orders-items` i INNER JOIN products p ON p.id = i.products_id AND i.order_id = new.order_id) t ON t.id = o.id SET o.total_price = t.total_price 
+1

有沒有附加任何觸發器? – MrTux 2014-09-05 10:04:03

+0

@MTTUX是的,我更新了我的問題 – Bas 2014-09-05 10:48:43

+0

嘗試更新您的刪除觸發器,並使用表名稱而不是定義的別名。表「訂單項」是否存在? – MrTux 2014-09-05 14:31:35

回答

0
DELETE FROM `broodjes-service`.order_items 
WHERE order_id = 42 

如果使用別名,然後像這樣

DELETE i 
FROM `broodjes-service`.order_items i 
WHERE order_id = 42 

不要混合數據庫名和別名

DELETE `broodjes-service`.i 
FROM `broodjes-service`.order_items i 
WHERE order_id = 42 
+0

我更新了我的問題,我確實觸發了它。一個用於刪除,更新和插入。順便說一句,當使用你的查詢時,我得到這個錯誤:'#1064 - 你的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊,以便在第1行'-service.order_items i WHERE order_id = 42'附近使用正確的語法。 – Bas 2014-09-05 10:45:31

+0

我更正了我的答案。您的觸發代碼與您的錯誤不符。它必須在其他地方 – 2014-09-05 10:57:00

+0

難道是因爲我的數據庫名稱中有'-'?或者'order_items'中的'order'這個詞已經被保留了或者什麼? – Bas 2014-09-05 10:58:38

-1

嘗試:

Use broodjes-service; 
DELETE FROM order_items WHERE order_id = 42