Liczniki w MySQL…

autor: Pomyk dnia 4 kwietnia 2010

Czyli jak zmodyfikować wartość i pobrać ją w sposób atomiczny.

Można to rozwiązać za pomocą tabeli z kolumną auto_increment, ale w tym przypadku jedna tabela = jeden licznik. Gdy chcemy mieć więcej liczników można wykorzystać do tego konstrukcję INSERT .. ON DUPLICATE KEY i podzapytania ze zmiennymi.

Schemat tabeli:

CREATE TABLE `counter` (
  `id` int(10) unsigned NOT NULL,
  `count` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`id`);
) ENGINE=InnoDB;

Zapytania zwiększające licznik numer 1 i pobierające jego wartość:

INSERT INTO counter (id, count)
(SELECT 1, @count := 1)
ON DUPLICATE KEY UPDATE count = (SELECT @count := count + 1);
SELECT @count AS count;

Kategoria: → Programowanie

Na razie brak Komentarzy

Odpowiedz

Notka: XHTML jest dozwolony. Twój adres e-mail nie zostanie opublikowany.

Subskrybuj kanał RSS z komentarzami do tego wpisu