【发布时间】:2014-09-01 10:44:15
【问题描述】:
我正在尝试在 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 中运行它时,它工作正常,但是当 play 2 自动运行它时(在一个名为 2.sql 的文件中)我收到以下错误:
您的 SQL 语法有错误;在尝试运行这个 SQL 脚本:
我在互联网上读到分隔符语句仅适用于特定的 gui,而不是每次。真的吗 ?为什么 ?由于需要分隔符语句,如何解决?
感谢您的帮助。
【问题讨论】:
-
您不需要第二个分隔符
DROP TRIGGER IF EXISTS invoice_line_insert $$$删除它已经在顶部。 -
@AbhikChakraborty 谢谢,但这并没有解决问题。
-
在第一条语句
DROP TRIGGER IF EXISTS invoice_line_insert ;之后添加; -
@AbhikChakraborty 也不起作用...继续努力,我们最终会找到解决方案的!
标签: mysql playframework