【发布时间】: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 将其视为一个输入。但这对我的情况并没有真正的帮助。我还了解到我需要使用BEGIN 和END
在触发器的主体中,但这也不是解决方案
这些是我使用的表格:
票= |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语法。
标签: sql triggers phpmyadmin