错误讯息:
SQL(1064):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第15行的“END”附近使用正确的语法
DELIMITER //
CREATE TRIGGER fill_address AFTER UPDATE ON orders
FOR EACH ROW
BEGIN
UPDATE orders
SET address = CONCAT_WS(
' ',
payment_method,
payment_address_1,
payment_address_2,
payment_city,
payment_postcode,
payment_country,
payment_zone)
WHERE id IN (SELECT id FROM INSERTED)
END //
DELIMITER
答案 0 :(得分:0)
当你只发表一个声明时,你不需要做任何特别的事情。您将代码发送到服务器并完成:
SELECT COUNT(*) AS customer_count FROM customer
但是,如果要一次发送多个查询,则需要告诉MySQL每个语句的结束位置。否则,SQL解析器会将所有内容视为一个查询,并且在查询停止有意义的任何地方都将中止解析:
SELECT COUNT(*) AS customer_count FROM customer
SELECT COUNT(*) AS order_count FROM order
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 接近' SELECT COUNT(*)AS order_count FROM order'在第2行
在几乎所有MySQL客户端中,默认分隔符是分号:
SELECT COUNT(*) AS customer_count FROM customer;
SELECT COUNT(*) AS order_count FROM order;
触发器和其他用户定义的例程是一种特殊情况,因为您需要区分两种情况:
创建触发器时,您发送的所有内容都是单个语句:所有CREATE TRIGGER代码。当触发器执行时,触发器主体内的每个语句都是一个独立的查询。我们如何用相同的代码来区分这两种情况?诀窍是在触发器体中使用标准;
分隔符(我们无法控制它)但在执行CREATE TRIGGER代码时暂时更改分隔符(我们可以使用提供的DELIMITER命令)大多数客户)。
您的代码的第一个版本缺少所有分隔符。当前版本缺少触发器主体分隔符。