PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да изтрия стойност на тип enum в postgres?

Изтривате (изпускате) типове изброяване като всеки друг тип, с DROP TYPE :

DROP TYPE admin_level1;

Възможно ли е всъщност да питате как да премахнете индивидуална стойност от тип enum ? Ако е така, не можете. Не се поддържа:

Въпреки че enum типовете са предназначени предимно за статични набори от стойности, има поддръжка за добавяне на нови стойности към съществуващ тип enum и за преименуване на стойности (вижте ALTER TYPE ). Съществуващите стойности не могат да бъдат премахнати от тип изброяване, нито подредбата на сортирането на такива стойности може да бъде променена, освен отпадането и повторното създаване на типа enum.

Трябва да създадете нов тип без стойността, да конвертирате всички съществуващи употреби на стария тип, за да използвате новия тип, след което да премахнете стария тип.

Напр.

CREATE TYPE admin_level1 AS ENUM ('classifier', 'moderator');

CREATE TABLE blah (
    user_id integer primary key,
    power admin_level1 not null
);

INSERT INTO blah(user_id, power) VALUES (1, 'moderator'), (10, 'classifier');

ALTER TYPE admin_level1 ADD VALUE 'god';

INSERT INTO blah(user_id, power) VALUES (42, 'god');

-- .... oops, maybe that was a bad idea

CREATE TYPE admin_level1_new AS ENUM ('classifier', 'moderator');

-- Remove values that won't be compatible with new definition
-- You don't have to delete, you might update instead
DELETE FROM blah WHERE power = 'god';

-- Convert to new type, casting via text representation
ALTER TABLE blah 
  ALTER COLUMN power TYPE admin_level1_new 
    USING (power::text::admin_level1_new);

-- and swap the types
DROP TYPE admin_level1;

ALTER TYPE admin_level1_new RENAME TO admin_level1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разберете дали upsert е актуализация с PostgreSQL 9.5+ UPSERT?

  2. Съвети и трикове за навигация в общността на PostgreSQL

  3. Как да запиша данни от R в PostgreSQL таблици с автоматично нарастващ първичен ключ?

  4. Как да импортирам модули или да инсталирам разширения в PostgreSQL 9.1+?

  5. Предаване на множество стойности в един параметър