我想在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