반응형
Mysql 이벤트의 도움으로 다음 쿼리를 실행하고 싶지만 이벤트에 delete 문을 추가하고 만들려고하면 Mysql 오류가 발생합니다. delete 문을 건너 뛰도록 선택하면 이벤트가 문제없이 생성됩니다.
INSERT INTO tbl_bookings_released
(
id, row, seatnum, price,theatre_id, play_id, show_id, showtime, show_date,
isbooked, inserted_at, inserted_from, booking_num, tot_price, subzone_id,
zone_id, txn_id
)
SELECT
id, row, seatnum, price,theatre_id, play_id, show_id, showtime,
show_date, isbooked, inserted_at, inserted_from, booking_num,
tot_price, subzone_id, zone_id, txn_id
FROM tbl_bookings
WHERE (
UNIX_TIMESTAMP( NOW( ) ) - UNIX_TIMESTAMP( inserted_at )
) /60 > 2
AND booking_num NOT
IN (
SELECT booking_id
FROM tbl_cust_booking
);
DELETE
FROM tbl_bookings
WHERE (
UNIX_TIMESTAMP( NOW( ) ) - UNIX_TIMESTAMP( inserted_at )
) /60 > 2
AND booking_num NOT
IN (
SELECT booking_id
FROM tbl_cust_booking
);
해결 방법
delimiter |
CREATE EVENT e_daily
ON SCHEDULE
EVERY 1 DAY
COMMENT 'Saves total number of sessions then clears the table each day'
DO
BEGIN
INSERT INTO tbl_bookings_released
(
id, row, seatnum, price,theatre_id, play_id, show_id, showtime, show_date,
isbooked, inserted_at, inserted_from, booking_num, tot_price, subzone_id,
zone_id, txn_id
)
SELECT
id, row, seatnum, price,theatre_id, play_id, show_id, showtime,
show_date, isbooked, inserted_at, inserted_from, booking_num,
tot_price, subzone_id, zone_id, txn_id
FROM tbl_bookings
WHERE (
UNIX_TIMESTAMP( NOW( ) ) - UNIX_TIMESTAMP( inserted_at )
) /60 > 2
AND booking_num NOT
IN (
SELECT booking_id
FROM tbl_cust_booking
);
DELETE
FROM tbl_bookings
WHERE (
UNIX_TIMESTAMP( NOW( ) ) - UNIX_TIMESTAMP( inserted_at )
) /60 > 2
AND booking_num NOT
IN (
SELECT booking_id
FROM tbl_cust_booking
);
END |
delimiter ;
참조 페이지 https://stackoverflow.com/questions/33931906
반응형
'MySql' 카테고리의 다른 글
MySQL (InnoDB) : 열 삭제 필요, 외래 키 제약 조건 및 인덱스 (0) | 2020.11.15 |
---|---|
MySQL 암호화에 대한 모범 사례? (0) | 2020.11.15 |
MySQL 대소 문자를 구분하도록 Mysql 테이블 열 변경 (0) | 2020.11.15 |
MySQL을 사용한 Doctrine 2 구성 (0) | 2020.11.15 |
MySQL을 사용하여 여러 데이터베이스에서 선택 및 삽입 (0) | 2020.11.15 |
댓글