MariaDB에서 트랜잭션을 만들어 IP 블랙리스트의 만료 시간을 설정합니다.
이 거래를 구축하는 데 사용한 질문은 다음과 같습니다.
mysql의 current_timestamp에 기본값인 1시간을 추가하는 방법은 무엇입니까?
데이터베이스에 트랜잭션을 만들어 다음을 채우려고 합니다.allowed
내 mariadb 데이터베이스 테이블의 열blacklisted_ips
나는 그것을 원합니다.allowed
내 칼럼에서 한 시간 후에.added
기본값이 다음인 열CURRENT_TIMESTAMP
지금까지 거래한 내용은 다음과 같습니다.
CREATE TRIGGER before_insert_on_blacklisted_ips BEFORE INSERT ON blacklisted_ips FOR EACH ROW BEGIN
SET NEW.allowed=NOW()+INTERVAL 1 HOUR;
END;
다음과 같은 오류 메시지가 표시됩니다.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 2
다음은 내 테이블 스키마입니다.
CREATE TABLE blacklisted_ips (
ip_id int(11) NOT NULL AUTO_INCREMENT,
ip_add varchar(15) NOT NULL,
added timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
allowed timestamp NOT NULL,
PRIMARY KEY (ip_id)
);
MySQL에는 다음 항목 사이에 모호성이 있습니다.;
그것이 a를 종료합니다.CREATE TRIGGER
진술, 그리고 가능성.;
트리거 본문에서 개별 문을 종료하는 문자입니다.
당신이 받은 오류는 혼란스럽습니다.
#1064 - SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 2행의 " " 근처에서 사용할 구문을 확인하십시오.
일반적으로 구문 오류에는 구문 분석기가 혼동된 위치 뒤에 있는 문 텍스트가 포함됩니다.하지만 당신의 경우, 그것은 혼란스러웠습니다.;
그것이 끝이라고 생각했습니다.CREATE TRIGGER
진술.따라서 종료 시 오류가 발생합니다. 파서에 관한 한 오류 뒤에는 텍스트가 없습니다.
동일한 문제가 영향을 미칩니다.CREATE PROCEDURE
그리고.CREATE FUNCTION
.
모호성을 해결하기 위해 MySQL 클라이언트는 DELMITER를 변경하는 내장 명령을 지원하므로 루틴 본문에 나타나는 문자 시퀀스와는 다른 명령으로 변경할 수 있습니다.
DELIMITER ;;
CREATE TRIGGER before_insert_on_blacklisted_ips BEFORE INSERT ON blacklisted_ips
FOR EACH ROW BEGIN
SET NEW.allowed=NOW()+INTERVAL 1 HOUR;
END ;;
또는 트리거가 단일 문 트리거이기 때문에 다음이 필요하지 않습니다.BEGIN...END
전혀 차단하지 않습니다.이렇게 하면 DELMITER 변경을 건너뛸 수 있습니다. 왜냐하면;
그것이 당신의 것이 끝납니다.CREATE TRIGGER
동일;
트리거의 단일 문을 종료합니다.
CREATE TRIGGER before_insert_on_blacklisted_ips BEFORE INSERT ON blacklisted_ips
FOR EACH ROW
SET NEW.allowed=NOW()+INTERVAL 1 HOUR;
추신: 이 문서는 https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html 의 예를 통해 문서화되어 있습니다.
언급URL : https://stackoverflow.com/questions/51411748/create-transaction-on-mariadb-to-set-expiry-time-for-ip-blacklist
'programing' 카테고리의 다른 글
응용 프로그램 인수를 기반으로 실행할 스프링 배치 작업 선택 방법 - 스프링 부트 Java 구성 (0) | 2023.07.22 |
---|---|
docker-compose의 env-file 및 MariaDB (0) | 2023.07.22 |
스프링부츠 MVC 멀티모듈 실행가능항아리 (0) | 2023.07.22 |
기존 테이블에 인덱스 생성 Oracle (0) | 2023.07.22 |
numpy.exp()는 정확히 무엇을 합니까? (0) | 2023.07.22 |