programing

Maria DB - Before Insert Trigger 값을 NEW.field에 할당합니다.

powerit 2023. 8. 11. 22:41
반응형

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

반응형