반응형
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
반응형
'programing' 카테고리의 다른 글
@angular/core/core에서 Ng serve throwing @에 내보낸 멤버 'eFactoryDef'이 없습니다. (0) | 2023.08.24 |
---|---|
Asp의 Web.config 설정에 액세스합니다.NetCore 앱? (0) | 2023.08.24 |
세션의 기본 수명은 얼마입니까? (0) | 2023.08.24 |
도커 컨테이너 노드의 maridia db galera 클러스터 문제 (0) | 2023.08.19 |
DOM에서 중복 ID를 확인하는 JQuery (0) | 2023.08.19 |