尝试使用触发器以将行插入另一个表时出现语法错误

Posted

技术标签:

【中文标题】尝试使用触发器以将行插入另一个表时出现语法错误【英文标题】:getting syntax error while trying to use trigger in order to insert a row to another table 【发布时间】:2021-04-04 00:11:58 【问题描述】:

作为一个学校项目,我正在尝试向我的数据库添加一个触发器。但我不断收到错误。我想要做的是当插入某些东西来购买表时,我想更新 shopping_history 表。

这是代码

DELIMITER $$
CREATE TRIGGER deneme AFTER INSERT ON buy
AS

BEGIN
INSERT INTO shopping_history(account_id,ticket_id,purchase_date,ticket_seat_no,company_name,ticket_price,ticket_from,ticket_to,ticket_date)
SELECT account.account_id,ticket.ticket_id,buy.purchase_date,ticket.seat_no,company.company_name,ticket.ticket_price,ticket.startpoint,ticket.destination,ticket.flight_time
FROM account,ticket,company, inserted 
WHERE account.account_id = inserted.account_id and inserted.ticket_id = ticket.ticket_id and company.company_id = ticket.company_id
END
$$
DELIMETER ;

这是我不断收到的错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ON buy
AFTER INSERT

BEGIN
INSERT INTO shopping_history(account_id,ticket_id' at line 1

经过一番搜索后,我发现我需要使用分隔符以确保 SQL 将其视为一个输入。但这对我的情况并没有真正的帮助。我还了解到我需要使用BEGINEND 在触发器的主体中,但这也不是解决方案

这些是我使用的表格:

票= |ticket_id|company_id|seat_no|frequency|flight_time|startpoint|destination|flight_id|ticket_price|

公司 = |公司编号|公司名称|

帐户 = |account_id|密码|邮件|

购买 = |购买日期|ticket_id|account_id|

我检查了名称,它们也是正确的。我不知道出了什么问题。感谢您的帮助

【问题讨论】:

正确的语法是:CREATE TRIGGER deneme AFTER INSERT ON buy @forpas 好吧,我也试过了,但仍然遇到同样的错误 用您正在使用的数据库标记您的问题。此外,学会使用正确、明确、标准、可读的JOIN语法。 【参考方案1】:

经过一番研究,我发现问题是我的网站没有更新资源文件。但是按 ctrl + f5 很有用。

【讨论】:

以上是关于尝试使用触发器以将行插入另一个表时出现语法错误的主要内容,如果未能解决你的问题,请参考以下文章

当我尝试在 mysql 中创建触发器时出现语法错误

在 PHP 中插入 MySQL 表时出现语法错误 [重复]

尝试编写 MySQL 触发器以替换 phpmyadmin 上的 CHECK 约束时出现语法错误

尝试使用多个值插入 SQL Server 时出现不正确的语法错误

将行插入 MySQL 表时出现 pymysql.err.ProgrammingError 错误(使用 Python、Flask、ClearDB)

使用 OleDb 插入访问时出现语法错误