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

Làm thế nào để thay đổi TÀI LIỆU THAM KHẢO trong PostgreSQL?

Các phụ thuộc bên trong giữa các bảng và / hoặc các đối tượng khác không bao giờ bị ràng buộc với tên đối tượng. Trong nội bộ, mọi đối tượng được lưu trữ trong bảng danh mục và OID (khóa chính nội bộ) của đối tượng được sử dụng cho mọi thứ khác.

Theo đó, một FOREIGN KEY tham chiếu được lưu trữ trong bảng danh mục pg_constraint (bản thân ràng buộc bao gồm tên của nó) và pg_depend . Thay đổi tên bảng sẽ hoàn toàn không làm giảm chức năng .

Tên của ràng buộc vẫn không thay đổi. Bạn có thể bỏ qua điều đó hoặc bạn có thể muốn đổi tên ràng buộc để nó không gây hiểu lầm.

Tuy nhiên, vì bạn không chỉ định tên ràng buộc tại thời điểm tạo, hệ thống đã chọn một tên mặc định, đó là example2_example1fk_fkey trong trường hợp của bạn trừ khi tên đã được sử dụng. Không có tham chiếu đến bảng được tham chiếu Tên. Nhưng tên cột cũng có thể sẽ phải thay đổi trong ví dụ của bạn. Và đó được sử dụng trong tên ràng buộc.

ALTER TABLE example2 RENAME example1fk TO example3fk;  -- rename column

Trong Postgres 9.2 trở lên, bạn cũng có thể đổi tên ràng buộc (cũng như dequis đã nhận xét ):

ALTER TABLE example2 RENAME CONSTRAINT example2_example1fk_fkey TO example2_example3fk_fkey;

Trong các phiên bản cũ hơn, bạn phải thả và tạo lại ràng buộc để đổi tên nó, tốt nhất là trong một câu lệnh duy nhất:

ALTER TABLE example2  -- rename constraint
   DROP CONSTRAINT example2_example1fk_fkey
 , ADD  CONSTRAINT example2_example3fk_fkey FOREIGN KEY (example3fk)
      REFERENCES example3 (id) DEFERRABLE INITIALLY DEFERRED;

Chi tiết trong sách hướng dẫn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra xem bảng kế thừa từ bảng khác trong PostgreSQL hay không

  2. Gỡ lỗi SQL trong pgAdmin khi SQL chứa các biến

  3. cách lấy thông tin đầu vào của người dùng từ qdateEdit và chọn nó từ cơ sở dữ liệu trong postgres

  4. Sqlalchemy với postgres. Cố gắng lấy "DISTINCT ON" thay vì "DISTINCT"

  5. PostgreSQL có chạy một số tối ưu hóa hiệu suất cho các giao dịch chỉ đọc không