我想在mysql中運行以下腳本:MySQL的分隔符語句錯誤
DELIMITER $$$
DROP TRIGGER IF EXISTS invoice_line_insert
$$$
CREATE TRIGGER invoice_line_insert AFTER INSERT
ON invoice_line FOR EACH ROW
BEGIN
IF NEW.type = "DELIVERY" THEN
UPDATE invoice
SET invoice.etdelivery_amount = invoice.etdelivery_amount + NEW.amount
WHERE invoice.id_invoice = NEW.invoice_parent_id_invoice;
ELSE
UPDATE invoice
SET invoice.etexpense_amount = invoice.etexpense_amount + NEW.amount
WHERE invoice.id_invoice = NEW.invoice_parent_id_invoice;
END IF;
UPDATE invoice
SET invoice.vatamount = (NEW.amount * ((
SELECT vat.rate
FROM vat
WHERE vat.id_vat = NEW.vat_id_vat
)/100)) + invoice.vatamount
WHERE invoice.id_invoice = NEW.invoice_parent_id_invoice;
UPDATE invoice
SET invoice.itamount = invoice.vatamount +
invoice.etdelivery_amount +
invoice.etexpense_amount
WHERE invoice.id_invoice = NEW.invoice_parent_id_invoice;
END
$$$
當我在MySQL Workbench中運行它,它工作正常,但是當比賽2來看,它authomatically(在一個名爲2.sql)我收到以下錯誤:
您的SQL語法錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以便在第1行[錯誤:1064,SQLSTATE:42000]處使用'DELIMITER $$$ DROP TRIGGER IF EXTRTS invoice_line_insert $$$ CREATE TRIGGER invo'附近的正確語法運行這個SQL腳本:
我在網上看到,分隔符語句只針對特定的gui,而不是每次。真的嗎 ?爲什麼?如何解決它,因爲我需要分隔符語句?
感謝您的幫助。
你不需要第二個分隔符'DROP TRIGGER IF EXISTS invoice_line_insert $$$'刪除其已經存在的頂部。 – 2014-09-01 10:49:29
@AhhikChakraborty謝謝,但它沒有解決問題。 – Moebius 2014-09-01 10:54:01
在第一個語句之後添加一個';'DROP TRIGGER IF EXUSTS invoice_line_insert;' – 2014-09-01 10:57:03