>

웹 사이트에서 클릭 한 건이 있습니다. 예를 들어, 각 사용자 프로필은 한 페이지에 500 번 나타날 수 있습니다. 그것이 나타날 때마다 나는 1을 줄입니다.

CREATE TABLE IF NOT EXISTS `show_profile` (   
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,   
`user` INT(11) UNSIGNED NOT NULL,   
`count`INT(11) UNSIGNED NOT NULL,   
`data` datetime NOT NULL,   
PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

count는 500을 갖습니다. 나타날 때마다 (rand) 1을 제거합니다. 499, 498. 그러나이 수는 정확해야합니다. 두 명의 사용자가 동시에 페이지를 열고 mysql이 두 가지 모두에 대해 499를 받으면 1 만 줄입니다.

어떤 아이디어라도 정확하게하는 방법?

  • 답변 # 1

    각 SQL 쿼리는 원자 적으로 실행됩니다. 즉, sql 문 내부의 카운터를 줄이면 두 개의 쿼리가 정확히 동시에 실행 되더라도 항상 올바른 결과를 얻을 수 있습니다.

    UPDATE show_profile SET count = count - 1 WHERE id = ? AND count > 0
    
    

  • 이전 데이터 생성을위한 C # MySQL 주입 방지
  • 다음 python - flask-sqlalchemy에서 증분 값 재설정