programing

MariaDB: 새 레코드 쓰기를 조건부로 중단하는 삽입 전 트리거

muds 2023. 8. 24. 22:28
반응형

MariaDB: 새 레코드 쓰기를 조건부로 중단하는 삽입 전 트리거

문제의 책이 이미 대출된 경우 라이브러리 데이터베이스에 대한 새 레코드 쓰기를 중단하는 트리거를 만들려고 합니다.지금까지 확인한 내용은 다음과 같습니다.

CREATE TRIGGER OnlyOneBorrowerAtATime
BEFORE INSERT ON Transaction
FOR EACH ROW
BEGIN
IF (EXISTS ( SELECT * FROM Transaction
       WHERE NEW.bookId = Transaction.bookId AND Transaction.transType = 'Loaned'))
THEN
    SIGNAL SQLSTATE '45000'
       SET MESSAGE_TEXT = 'Book has not been returned';
END IF;
END;

MariaDB에서 다음 오류가 반환됩니다. SQL 오류(1064):SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 9행의 "" 근처에서 사용할 올바른 구문을 확인하십시오.

MariaDB 버전은 10.5.9입니다.

추가 aDELIMITER당신의 질문에 대해서는

DELIMITER $$
CREATE TRIGGER OnlyOneBorrowerAtATime
BEFORE INSERT ON Transaction
FOR EACH ROW
BEGIN
IF (EXISTS ( SELECT * FROM Transaction
       WHERE NEW.bookId = Transaction.bookId AND Transaction.transType = 'Loaned'))
THEN
    SIGNAL SQLSTATE '45000'
       SET MESSAGE_TEXT = 'Book has not been returned';
END IF;
END$$
DELIMITER ;

언급URL : https://stackoverflow.com/questions/66511279/mariadb-before-insert-trigger-to-conditionally-abort-writing-a-new-record

반응형