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

postgresql:enum và ký tự thay đổi, đang cập nhật

Vấn đề với một nỗ lực đơn giản là bạn có một nhóm gọi diễn viên, gọi nhóm diễn viên, gọi nhóm diễn viên ...

Bạn cần bằng cách nào đó để thoát khỏi varchar-> enum trong dàn diễn viên của mình. Cách đơn giản nhất (dễ hiểu nhất) là chỉ cần chuyển đổi thủ công. Lưu ý rằng các ký tự chuỗi đang được truyền trong câu lệnh trường hợp không phải là văn bản mà chúng được trích dẫn-không xác định-loại bỏ qua đệ quy vô hạn.

BEGIN;

CREATE TYPE t_tl AS ENUM ('red', 'amber', 'green');

CREATE FUNCTION dummy_cast(varchar) RETURNS t_tl AS $$
    SELECT CASE $1
        WHEN 'red' THEN 'red'::t_tl
        WHEN 'amber' THEN 'amber'::t_tl
        WHEN 'green' THEN 'green'::t_tl
    END;
$$ LANGUAGE SQL;

CREATE CAST (varchar AS t_tl) WITH FUNCTION dummy_cast(varchar) AS ASSIGNMENT;

CREATE TABLE t (x t_tl);

INSERT INTO t VALUES ('red');
INSERT INTO t VALUES ('green'::varchar);

SELECT * FROM t;

ROLLBACK;


  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ác hàng bị ảnh hưởng cho ActiveRecord ::Base.connection.execute với Postgres

  2. Tôi nên sử dụng giá trị Postgres nào trong DATABASE_ENGINE của Django?

  3. Số lượng mục nhập tối đa trong histogram_bounds

  4. Tệp Socket /var/pgsql_socket/.s.PGSQL.5432 Thiếu trong Mountain Lion (Máy chủ OS X)

  5. Làm thế nào để cào db:thả và cào db:tạo trên Heroku?