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

Postgres:Thêm ràng buộc nếu nó chưa tồn tại

Một giải pháp khả thi là chỉ cần sử dụng DROP NẾU TỒN TẠI trước khi tạo ràng buộc mới.

ALTER TABLE foo DROP CONSTRAINT IF EXISTS bar;
ALTER TABLE foo ADD CONSTRAINT bar ...;

Có vẻ dễ dàng hơn so với việc cố gắng truy vấn information_schema hoặc danh mục, nhưng có thể chậm trên các bảng lớn vì nó luôn tạo lại ràng buộc.

Chỉnh sửa 2015-07-13:Kev đã chỉ ra trong câu trả lời của mình rằng giải pháp của tôi tạo ra một cửa sổ ngắn khi ràng buộc không tồn tại và không được thực thi. Mặc dù điều này là đúng, nhưng bạn có thể tránh một cửa sổ như vậy khá dễ dàng bằng cách gói cả hai câu lệnh trong một giao dịch.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách kết nối với cơ sở dữ liệu PostgreSQL từ xa thông qua SSL với Python

  2. Ánh xạ ngủ đông giữa PostgreSQL enum và Java enum

  3. Làm thế nào để đọc tất cả các hàng từ bảng lớn?

  4. Làm cách nào để thêm cột nếu không tồn tại trên PostgreSQL?

  5. Truy vấn trục xoay động sử dụng PostgreSQL 9.3