테이블 T에 새 행을 삽입 할 때 테이블이 특정 임계 값보다 큰지 확인하고 싶다면 대소 문자가 가장 오래된 레코드를 삭제하십시오.MySQL 트리거 : 테이블이 너무 커지면 행을 삭제할 수 있습니까?
나는 단순히 트리거를 만들 수 있다고 생각하지만, 우리가 실제로 삽입되는 분명히 MySQL은 테이블의 수정을 허용하지 않습니다
Delimiter $$
CREATE TRIGGER test
AFTER INSERT ON amoreAgentTST01
FOR EACH ROW
BEGIN
DECLARE table_size INTEGER;
DECLARE new_row_size INTEGER;
DECLARE threshold INTEGER;
DECLARE max_update_time TIMESTAMP;
SELECT SUM(OCTET_LENGTH(data)) INTO table_size FROM amoreAgentTST01;
SELECT OCTET_LENGTH(NEW.data) INTO new_row_size;
SELECT 500000 INTO threshold;
select max(updatetime) INTO max_update_time from amoreAgentTST01;
IF (table_size+new_row_size) > threshold THEN
DELETE FROM amoreAgentTST01 WHERE max_update_time = updatetime; -- and check if not current
END IF;
END$$
delimiter ;
: 여기
Code: 1442 Msg: Can't update table 'amoreAgentTST01' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
내가 시도 트리거입니다
데이터베이스에서이 작업을 수행하는 방법에 대해 알고 있습니까?
분명히 내 프로그램에서해야 할 일이 있습니까?