PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để xóa các chuỗi không sử dụng?

Trước hết, một chuỗi được tạo tự động cho một cột nối tiếp được xóa tự động , khi cột (hoặc bảng nằm trong) bị xóa. Vấn đề bạn mô tả không nên tồn tại để bắt đầu. Chỉ rất các phiên bản cũ của PostgreSQL không làm được điều đó. 7.4 trở lên?

Giải pháp cho vấn đề:

Truy vấn này sẽ tạo các lệnh DDL để xóa tất cả các chuỗi "không liên kết" trong cơ sở dữ liệu, nó được thực thi trong:

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;

Truyền đến regclass trong c.oid::regclass tự động lược đồ đủ điều kiện cho các tên trình tự khi cần thiết theo search_path hiện tại . Xem:

Kết quả:

DROP SEQUENCE foo_id_seq;
DROP SEQUENCE bar_id_seq;
...

Thực thi kết quả để loại bỏ tất cả các chuỗi không bị ràng buộc vào một cột nối tiếp (hoặc bất kỳ cột nào khác). Nghiên cứu ý nghĩa của cột và bảng tại đây .

Cẩn thận Tuy nhiên! Nó không có nghĩa là những trình tự đó không được sử dụng theo cách khác. Có một số trường hợp sử dụng trong đó chuỗi được tạo dưới dạng các đối tượng độc lập. Ví dụ:nếu bạn muốn nhiều cột chia sẻ một chuỗi. Bạn nên biết chính xác những gì bạn đang làm.

Tuy nhiên, bạn không thể xóa các chuỗi liên kết với một serial cột theo cách này. Vì vậy, hoạt động an toàn trong này tôn trọng.

DROP SEQUENCE test_id_seq

Kết quả:

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. Biểu mẫu Django để truy vấn cơ sở dữ liệu (các mô hình)

  2. Số nguyên nằm ngoài phạm vi trong cơ sở dữ liệu PostgreSQL

  3. tìm vị trí gần nhất theo vĩ độ và kinh độ trong postgresql

  4. Cách khử trùng SQL thô trong Rails 4

  5. Làm cách nào để tạo mô hình cụm chuyển đổi dự phòng PostgreSQL với Docker / Kubernetes?