【发布时间】:2013-11-15 08:25:44
【问题描述】:
我正在尝试将使用 Firebird 制作的触发器重写为 MySql 触发器。
我真的不知道会是什么。如果有人可以帮助我...谢谢
我正在用PHP提交SQL,如下所示,错误信息是:
无效查询:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“DELIMITER $$ CREATE TRIGGER FP_PAGO_AI AFTER INSERT ON FORMA_PGTO FOR EACH R”附近使用正确的语法
触发器的代码是:
$str[] = "
DELIMITER $$
CREATE TRIGGER FP_PAGO_AU AFTER UPDATE ON FORMA_PGTO
FOR EACH ROW
BEGIN
declare rec_count integer;
declare pg_count integer;
declare cp_pago integer;
select count(*) from forma_pgto fp where fp.id_cpagar=new.id_cpagar into rec_count;
select count(pago) from forma_pgto f where f.id_cpagar=new.id_cpagar and f.pago=1 into pg_count;
/* Se todas parcelas estao pagas, entao setar conta paga */
if (rec_count = pg_count) then
update cpagar c set c.pago=1 where c.id=new.id_cpagar;
/* Senao */
else
/* Se CPAGAR.PAGO = 1, recebe 0 */
select cpg.pago from cpagar cpg where cpg.id=new.id_cpagar into cp_pago;
if (cp_pago = 1) then /* Se cp_pago = 1 */
update cpagar set pago=0 where id=new.id_cpagar;
end if;
end if;
END
END $$
DELIMITER ;
";
【问题讨论】:
-
你用来发送这个到 MySQL 的方法一次只能执行 1 条语句。
DELIMITER $$是一个声明。 -
你的意思是 PHP mysql_query 函数?好吧,无论如何,我尝试直接在 phpMyAdmin 中提交查询,但它返回了其他错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 26 行的“END”附近使用正确的语法
-
我编辑了标题以修正拼写错误,但 SO 要求我改写标题,因为该标题已经是另一个问题了。