在Postgresql中将数据插入表的用户定义类型元素中

时间:2018-07-07 06:17:32

标签: arrays postgresql insert create-table sql-types

我定义了以下三种类型:

CREATE TYPE EventDescriptionType AS ENUM (
 'felt report',
 'Flinn-Engdahl region',
 'local time',
 'tectonic summary',
 'nearest cities',
 'earthquake name',
 'region name'
);

CREATE TYPE ResourceReference AS (
  "resourceID" varchar(255)  
);

CREATE TYPE EventDescription AS (
 "text" text,
 "type" EventDescriptionType
);

我还创建了一个具有上述类型元素的表:

CREATE TABLE Event (
 "Event_id"                   serial PRIMARY KEY,
 "description"                EventDescription ARRAY
);

然后,通过此命令在该表中插入一些数据后:

insert into Event values (1,'{'L','felt report'}');

我收到此错误:

  

错误:“ L”处或附近的语法错误
      第1行:插入事件值(1,'{'L','感觉报告'}');

对于事件表中的元素“ dexcription”,我分别在EventDescription类型的“ text”和“ type”数组中将event1id作为'event_id'和'L'和'felt report'传递了。

有人可以让我知道正确的方法吗? 任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:2)

您需要将数组类型强制转换为EventDescription[]

insert into Event values (1,
                          ARRAY[('L','felt report')]::EventDescription[]
                          );

sqlfiddle