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

Có cách nào để ép kiểu dữ liệu postgresql 9.3 để nó chỉ ảnh hưởng đến một phía không

Có ba loại diễn viên. Truyền đã đăng ký cho nguồn của bạn một loại đích phải là "gán" (a ) hoặc "ngầm định" (i ) để làm việc trong VALUES biểu thức của một INSERT bản tường trình. Xem danh mục hệ thống pg_cast , diễn viên từ boolean thành integer chỉ được định nghĩa "rõ ràng" (e ) :

SELECT castsource::regtype, casttarget::regtype, castfunc::regproc, castcontext
FROM   pg_cast
WHERE  castsource = 'bool'::regtype
AND    casttarget = 'int'::regtype;

Kết quả:

castsource  casttarget  castfunc         castcontext
boolean     integer     pg_catalog.int4  e

Có liên quan:

Bạn sẽ phải thay đổi castcontext để làm cho nó hoạt động - mà bạn có thể làm siêu người dùng. Không có câu lệnh "ALTER CAST" cho thao tác kỳ lạ này, bạn phải UPDATE trực tiếp. Như:

UPDATE pg_cast
SET    castcontext = 'a'
WHERE  castsource = 'bool'::regtype
AND    casttarget = 'int'::regtype;

Tuy nhiên , có những lý do chính đáng cho bối cảnh diễn viên được xác định trước của mỗi dàn diễn viên. Giả mạo danh mục hệ thống không phải là điều bạn nên làm nhẹ. Trong trường hợp cụ thể này, nó có thể làm mất cân bằng việc đưa ra quyết định khi Postgres phải chọn một dàn diễn viên phù hợp. Giống như để chọn từ một tập hợp các hàm quá tải ...

Quy trình tương tự cho integer -> boolean , int2 -> boolean , boolean -> int2 , v.v.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL SELECT tốc độ int so với varchar

  2. PostgreSQL Chọn mục nhập gần đây nhất cho một ID nhất định

  3. Cách trả về các bản ghi theo đúng thứ tự trong PostgreSQL

  4. Tạo kết xuất Postgres và lưu vào một máy chủ khác

  5. Chuyển đổi danh sách các phái trong Python thành mảng Postgresql của json