PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak usunąć nieużywane sekwencje?

Po pierwsze, sekwencja tworzona automatycznie dla kolumny szeregowej jest usuwana automatycznie , gdy kolumna (lub tabela, w której się znajduje) zostanie usunięta. Opisany przez Ciebie problem nie powinien istnieć. Tylko bardzo stare wersje PostgreSQL tego nie robiły. 7.4 lub starszy?

Rozwiązanie problemu:

To zapytanie wygeneruje polecenia DDL, aby usunąć wszystkie „niepowiązane” sekwencje w bazie danych jest wykonywany w:

SELECT string_agg('DROP SEQUENCE ' || c.oid::regclass, '; ') || ';' AS ddl
FROM   pg_class       c
LEFT   JOIN pg_depend d ON d.refobjid = c.oid
                       AND d.deptype <> 'i'
WHERE  c.relkind = 'S'
AND    d.refobjid IS NULL;

Rzut na regclass w c.oid::regclass w razie potrzeby automatycznie kwalifikuje nazwy sekwencji zgodnie z bieżącą search_path . Zobacz:

Wynik:

DROP SEQUENCE foo_id_seq;
DROP SEQUENCE bar_id_seq;
...

Wykonaj wynik, aby usunąć wszystkie sekwencje, które nie są powiązane z kolumną szeregową (lub żadną inną kolumną). Zapoznaj się z znaczeniem kolumn i tabel .

Ostrożnie chociaż! To nie oznacza, że ​​te sekwencje nie są używane w inny sposób. Istnieje wiele przypadków użycia, w których sekwencje są tworzone jako samodzielne obiekty. Na przykład, jeśli chcesz, aby wiele kolumn współdzieliło jedną sekwencję. Powinieneś dokładnie wiedzieć, co robisz.

Jednak nie możesz usuń sekwencje powiązane z serial kolumnę w ten sposób. Więc operacja jest bezpieczna w tym szacunek.

DROP SEQUENCE test_id_seq

Wynik:

ERROR:  cannot drop sequence test_id_seq because other objects depend on it
DETAIL:  default for table test column id depends on sequence test_id_seq
HINT:  Use DROP ... CASCADE to drop the dependent objects too.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy można wykonywać zapytania między bazami danych za pomocą PostgreSQL?

  2. Uzyskaj liczbę dni w miesiącu w PostgreSQL

  3. czy postgres naprawdę zaktualizuje plik strony, gdy wszystkie pola są równe przed i po aktualizacji?

  4. Wbudowany Postgres do wiosennych testów rozruchowych

  5. Praskie spotkanie PostgreSQL