PostgreSQL INSERT into an array of enums

前端 未结 4 1862
萌比男神i
萌比男神i 2021-02-13 02:48

How can I insert an array of enums?
Here is my enum:

CREATE TYPE equipment AS ENUM (\'projector\',\'PAsystem\',\'safe\',\'PC\',\'ph         


        
相关标签:
4条回答
  • 2021-02-13 03:07

    Additionally to @harm answer, you can skip quotations marks:

    INSERT INTO lecture_room (equipment) VALUES ('{projector, safe}');
    
    0 讨论(0)
  • 2021-02-13 03:16

    Old question, but a new answer. In modern versions of Postgres (tested with 9.6) none of this is required. It works as expected:

    INSERT INTO lecture_room (equipment) VALUES ('{"projector", "safe"}');
    
    0 讨论(0)
  • 2021-02-13 03:17

    The alternative to an ARRAY constructor like @Mark correctly supplied is to cast a string literal directly:

    '{projector,PAsystem,safe}'::equipment[]
    

    This variant is shorter and some clients have problems with the ARRAY constructor, which is a function-like element.

    0 讨论(0)
  • 2021-02-13 03:18

    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.

    0 讨论(0)
提交回复
热议问题