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

Đổi tên một giá trị enum dẫn đến Không tìm thấy mối quan hệ kiểu

Đổi tên giá trị của một enum chỉ được hỗ trợ bắt đầu bằng Postgres 10.

Như được ghi trong sách hướng dẫn bạn phải sử dụng rename VALUE , không phải thuộc tính rename attribute để đổi tên giá trị của một enum.

Giá trị Enums cũng là hằng số chuỗi, không phải là định danh. Do đó, bạn cần đặt chúng trong dấu ngoặc kép, không phải dấu ngoặc kép:

ALTER TYPE public.enum_subscription_sub_frequency RENAME VALUE 'BI-WEEKLY' TO 'BI_WEEKLY';

Nếu bạn thắc mắc tại sao bạn gặp lỗi "loại ... không tồn tại" với cú pháp sai:

Khi bạn sử dụng tùy chọn RENAME ATTRIBUTE điều này chỉ ra rằng một loại đối tượng "thông thường" nên được thay đổi, vì vậy Postgres tìm kiếm một loại đối tượng "thực".

Nhưng "kiểu enum" không phải là "kiểu đối tượng" và do đó Postgres phàn nàn về "kiểu xyz không tồn tại", thay vì lỗi cú pháp.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nâng cấp tự động gần như bằng không thời gian ngừng hoạt động của các cụm PostgreSQL trong đám mây (Phần I)

  2. SQLAlchemy nhiều khóa ngoại trong một lớp được ánh xạ tới cùng một khóa chính

  3. Làm cách nào để thực hiện các giao dịch cơ sở dữ liệu với psycopg2 / python db api?

  4. PostgreSQL CHÈN vào một mảng enums

  5. django cách xác định mô hình cho nhiều bảng hiện có trong cơ sở dữ liệu postgresql