如何在mysql中声明触发器中的值?
我正在尝试使用mysql和phpmyadmin为我的数据库编写触发器。我有一个数据库,其中有一个用于存储客户信息的表,其中存储了信用卡号码,还有一个用于存储酒店预订的表,其中存储了客户的付款方式。我想我的触发器激活后更新客户的信息,如果信用卡号被删除,以改变付款方式。问题是phpmyadmin没有编译它如何在mysql中声明触发器中的值?,mysql,triggers,declare,Mysql,Triggers,Declare,我正在尝试使用mysql和phpmyadmin为我的数据库编写触发器。我有一个数据库,其中有一个用于存储客户信息的表,其中存储了信用卡号码,还有一个用于存储酒店预订的表,其中存储了客户的付款方式。我想我的触发器激活后更新客户的信息,如果信用卡号被删除,以改变付款方式。问题是phpmyadmin没有编译它 CREATE TRIGGER after_credit_card_update AFTER UPDATE ON client for each row BEGIN declar
CREATE TRIGGER after_credit_card_update
AFTER UPDATE
ON client
for each row
BEGIN
declare cl_id int;
IF ( (new.Credit_Card_Number = " ") or (new.Credit_Card_Number is null)) then
select into cl_id
select reservation.Client_Id from
reservation where ((reservation.Client_Id = new.Client_Id) and (reservation.Payment = 'Credit'))
limit 1 ;
update reservation
set reservation.Payment = "NOT PAID"
where reservation.Client_Id = cl_id;
END IF;
END$$
我相信问题是当我声明我的价值时:cl_id
1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解第8行中“into cl_id select reservation.Client_id from reservation where”附近使用的正确语法
固定的:
DELIMITER $$
CREATE TRIGGER after_credit_card_update
AFTER UPDATE
ON client
for each row
BEGIN
declare cl_id int;
IF ( (new.Credit_Card_Number = " ") or
new.Credit_Card_Number is null)) then
select reservation.Client_Id into cl_id from reservation
here ((reservation.Client_Id = new.Client_Id) and
reservation.Payment = 'credit'))
limit 1 ;
update reservation
set reservation.Payment = "NOT PAID"
where reservation.Client_Id = cl_id;
END IF;
END$$
定界符 这里不详细介绍,但您需要在触发器前后添加
分隔符
语句,以便MySQL知道如何解析代码。例如:
在尝试创建过程之前,您是否将分隔符设置为
$
?是的,我仍然没有执行任何操作我复制粘贴了您的解决方案,但它仍然不起作用
DELIMITER $$
CREATE TRIGGER after_credit_card_update
AFTER UPDATE
ON client
for each row
BEGIN
declare cl_id int;
IF ( (new.Credit_Card_Number = " ") or
new.Credit_Card_Number is null)) then
select into cl_id
select reservation.Client_Id from
reservation where reservation.Client_Id = new.Client_Id
limit 1 ;
update reservation
set reservation.Payment = "NOT PAID"
where reservation.Client_Id = cl_id;
END IF;
END$$
DELIMITER ;