반응형
Maria DB - Before Insert Trigger 값을 NEW.field에 할당합니다.
저는 이것에 대해 처음이며, 배경은 완전히 오라클과 관련 제품을 기반으로 합니다.나는 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_receip_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.cancel_receipt_no:= next_field로 할당하려고 할 때 여기서 첫 번째 코드처럼 NEW.field에 값을 할당할 수 없다는 제한이 있습니까?도와주세요, 제가 여기서 이걸 어떻게 할 수 있을까요?
아래 코드를 사용했는데 오류가 사라졌습니다(SET 사용):
SET NEW.cancel_recept_no = next_recept;
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 ;
지식이 부족했기 때문에 점차 이곳의 모든 선배들의 도움을 받아 배울 것입니다.
언급URL : https://stackoverflow.com/questions/72526585/maria-db-before-insert-trigger-assign-value-to-new-field
반응형
'programing' 카테고리의 다른 글
시스템 오버레이 창 만들기(항상 맨 위에 있음) (0) | 2023.08.11 |
---|---|
php를 사용하여 텍스트 파일 내용 지우기 (0) | 2023.08.11 |
Android Fragment on Attach()는 더 이상 사용되지 않습니다. (0) | 2023.08.11 |
ORA-0131 : 권한 부족 DEBUG CONNECT SESSION (0) | 2023.08.11 |
스타일 시트 경로의 슬래시(/) 대 타일 슬래시(~/) (0) | 2023.08.11 |