Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie rekordów, które ich nie usuwa
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
phpion
Witam,
mam dość dziwną sytuację. W tabeli mam ok. 1,7mln rekordów. Potrzebuję usuwać te rekordy, które są starsze niż 3 miesiące. Żaden problem! Najpierw napisałem bezpieczne zapytanie, które ustawi flagę is_deleted dla wybranych rekordów, żeby nie usunąć czegoś za dużo. Następnego dnia (zadanie uruchamiane w CRONie) sprawdziłem i zdecydowana większość rekordów została oznaczona jako te do usunięcia. Zmieniłem więc UPDATE na DELETE, sprawdziłem dziś - liczba rekordów się nie zmieniła. Zdziwiło mnie to, ale uruchomiłem zadanie ręcznie. Mieliło i mieliło, w końcu skończyło. SELECT COUNT(id) - znowu tyle samo rekordów. Zrobiłem dla pewności jeszcze VACUUM ANALYZE, po czym ponownie sprawdziłem ilość rekordów - bez zmian. Odpaliłem zapytanie z poziomu PgAdmina, znowu odczekałem ładne -naście minut, znowu wykonałem zliczenie rekordów i znowu bez zmian! Co może być przyczyną nie usuwania się rekordów?

Dodam, że:
- nie, nie ma na tabeli triggera zabezpieczającego przed usunięciem danych,
- tak, zapytanie usuwające na pewno jest poprawne.

Pozdrawiam,
pion

// Edit:
Dla jasności: dane usuwam takim zapytaniem:
  1. DELETE FROM tabela WHERE kolumna < 1323845895;

gdzie kolumna jest kolumną typu BIGINT (tak zastałem bazę). Usunięcie konkretnego rekordu:
  1. DELETE FROM tabela WHERE id = 123;

usuwa rekord bez problemu.
cojack
A strzel takie query:

  1. DELETE FROM tabela WHERE IS_DELETED = 1
phpion
Przyczyna problemu namierzona, całość znajduje się tutaj. Nie ma sensu dublować dyskusji więc skupię się tylko na GL.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.