PostgreSQL INSERT into an array of enums

enums, postgresql, sql-insert, types

Solution

PostgreSQL doesn't know how to automatically cast input of type `text` to input of type `equipment`. You have to explicitly declare your strings as being of type `equipment`:

ARRAY['projector','PAsystem','safe']::equipment[]

I confirmed this with SQL Fiddle.

Problem

How can I insert an `array of enums`? Here is my `enum`: ``` CREATE TYPE equipment AS ENUM ('projector','PAsystem','safe','PC','phone'); ``` Then my table has an array of equipment: ``` CREATE TABLE lecture_room ( id INTEGER DEFAULT NEXTVAL('lecture_id_seq') , seatCount int , equipment equipment[] ) INHERITS(venue); ``` Here is my ATTEMPT to INSERT: ``` INSERT INTO lecture_room (building_code, floorNo, roomNo, length, width , seatCount, equipment) VALUES ('IT', 4, 2, 10, 15 ,120, ARRAY['projector','PAsystem','safe']), ``` But it gives me the following error: ``` ERROR: column "equipment" is of type equipment[] but expression is of type text[] SQL state: 42804 Hint: You will need to rewrite or cast the expression. ```

Original source