Maria DB -在插入触发器之前给NEW.field赋值



我是新手,背景完全基于Oracle及相关产品。我已经安装了XAMPP 3.3.0,我已经创建了一个触发器工作正常。

DELIMITER $$
CREATE OR REPLACE 
TRIGGER bi_cancel_booking BEFORE INSERT
ON cancelled_booking
FOR EACH ROW BEGIN
--
DECLARE next_receipt VARCHAR(20);
DECLARE rct_no INT(5);
--
SELECT MAX(starting_number)+1, CONCAT(receipt_prefix,'-',MAX(starting_number)+1)
INTO rct_no, next_receipt 
FROM com_receipt_types
WHERE receipt_type = 'Cancel Booking';
END$$
DELIMITER ;

但是当使用NEW时。cancel_receipt_no(见下面的代码)显示错误:错误代码:1327未声明的变量:NEW

DELIMITER $$
CREATE OR REPLACE 
TRIGGER bi_cancel_booking BEFORE INSERT
ON cancelled_booking
FOR EACH ROW BEGIN
--
DECLARE next_receipt VARCHAR(20);
DECLARE rct_no INT(5);
--
SELECT MAX(starting_number)+1, CONCAT(receipt_prefix,'-',MAX(starting_number)+1)
INTO rct_no, NEW.cancel_receipt_no
FROM com_receipt_types
WHERE receipt_type = 'Cancel Booking';
END$$
DELIMITER ;

是否存在不能将值赋给NEW的限制?字段,在我的第一个代码在这里,当我试图分配值为:NEW。cancel_receipt_no:= next_receipt那么它也显示错误。请帮帮我,我要怎么做?

下面使用的代码和错误已经消失(使用SET):

设置新的。cancel_receipt_no = next_receipt;

DELIMITER $$
CREATE OR REPLACE 
TRIGGER bi_cancel_booking BEFORE INSERT
ON cancelled_booking
FOR EACH ROW BEGIN
--
DECLARE next_receipt VARCHAR(20);
DECLARE rct_no INT(5);
--
SELECT MAX(starting_number)+1, CONCAT(receipt_prefix,'-',MAX(starting_number)+1)
INTO rct_no, next_receipt 
FROM com_receipt_types
WHERE receipt_type = 'Cancel Booking';
SET NEW.cancel_receipt_no := next_receipt;

END$$
DELIMITER ;

正是因为我的知识不足,渐渐地我会在这里所有学长的帮助下学习。

最新更新