将值插入用户定义的类型

时间:2016-03-09 08:12:39

标签: postgresql user-defined-types

我已将SchemaTuple定义为:

create type SchemaTuple as ("table" text, "attributes" text);

我想在此插入值,但我不知道该怎么做。

我首先尝试声明变量:

tuple SchemaTuple;

然后:

INSERT INTO tuple (table, attributes) VALUES ('tablename','attributename');             

问题是,我收到错误:

ERROR:  syntax error at or near ","

其中,是指(table,attributes)

有人可以告诉我这样做的正确方法吗?

1 个答案:

答案 0 :(得分:0)

您无法直接在类型中插入值。您将为该类型创建一个表,或者使用该类型作为表中属性的类型。 例如:

--create type
CREATE TYPE PersonType AS (
    ID INTEGER,
    NAME CHAR(50)
);

CREATE TABLE Student OF PersonType (
    ID WITH OPTIONS NOT NULL,
    NAME WITH OPTIONS NOT NULL
);

INSERT INTO Student VALUES (100, 'Joe');

CREATE TABLE Transcript (   
    COURSE CHAR(10),
    STDNT PersonType 
);

然后将值插入Transcript表,并将STDNT的值指定为Row类型。