2012-06-06 6 views
0

MySQL 테이블에 10 행만 저장하는 방법은 무엇입니까? 이전 행은 새 행이 추가 될 때 삭제되어야하지만 한 번만 테이블에 10 행이 있어야합니다. 테이블 행을 제한하는 것

는 분 날짜입니다 행을 삭제, 내가

+0

한 열에서 ID 또는 시간을 지정해야이 쿼리

delete from table_name where (cond) order by id desc limit 10 

을 실행 ??? 가져 오지 않아요. 나는 열 가지만 저장하고 싶습니다 ... –

+1

@ 사람은 쿼리가 필요 없습니다. 더 중요한 이유는 ?? 나는 결코 생각 학교를 지우지 않을거야. 앞으로 삭제할 정보가 필요한 경우 어떻게됩니까? – Ben

+0

@triveni 답변이있는 경우 답변의 오른쪽에있는 확인란을 클릭하고 –

답변

1

당신은 after insert 트리거와이를 달성 할 수 도와주세요. 예 : DELETE FROM myTable where myTimestamp = (SELECT MIN (myTimestamp) FROM myTable)하지만 이론 상으로는 업데이트의 세분성에 따라 여러 행을 삭제할 수 있습니다.

시퀀스가 ​​증가 할 수 있으며 항상 해당 시퀀스의 최소값 만 삭제하면됩니다.

질문은 왜 이렇게하고 싶습니까? 약간 특이한 요구 사항입니다.

기본 예제 (유효성 검사/실행 안 함,이 특정 컴퓨터에 mySQL이 없음)는 다음과 유사합니다.

CREATE TRIGGER CycleOldPasswords AFTER INSERT ON UserPasswords FOR EACH ROW 

    set @mycount = SELECT COUNT(*) FROM UserPasswords up where up.UserId = NEW.UserId; 

    if myCount >= 10 THEN 
     DELETE FROM UserPasswords up where up.Timestamp = (SELECT min(upa Timestamp) FROM UserPasswords upa WHERE NEW.UserId = upa.UserId) AND NEW.UserId = up.UserId; 
    END 
END; 
+0

을 클릭하십시오. Jeff에 따르면 모든 행을 보관할 수 있습니다. 왜 구식 게임을 삭제 하시겠습니까? – zessx

+0

사용자가 새 암호를 입력 할 때 기존 암호 표가 있으면 이전 10 줄과 비교해야합니다. 현재 암호가 변경되지 않아야합니다 ... –

+0

원시 텍스트 암호가 아닌 해시를 비교하고 싶습니다. 사용자 당 열이 10 개입니까? 나는 심각하게 시퀀스 번호를 고려할 것입니다. 삽입 트리거 이후에, 사용자 ID = 삽입 된 행의 사용자 ID가있는 시퀀스의 최소값을 삭제하십시오. 희망은 그 말이 맞습니다. –

0

첫 번째 행을 삽입 할 때 마지막으로 삽입 한 ID를 검색하여 변수에 저장할 수 있습니다. 10 개의 행이 삽입되면 id가 첫 번째로 삽입 된 레코드의 id가 < 인 행을 삭제하십시오. 그것을 시도하십시오.

0

모든 먼저 삽입 쿼리 을 사용하여 모든 값을 삽입 한 다음 필요한 쿼리

관련 문제