是否可以在 postgres 的一列中插入多个 ENUM
值?
例如在 Mysql 中,我可以做到。
create table 'foo'(
'foo_id' smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`foo_enum` enum('foo','bar','dummy') DEFAULT 'foo',
);
insert into 'foo' ('foo_id', 'foo_enum') values (1, 'foo, bar')
最佳答案
您可以使用 CREATE TYPE
声明你的枚举:
CREATE TYPE tfoo AS ENUM('foo','bar','dummy');
并使用 array它用于存储值:
CREATE TABLE foo (foo_id serial, foo_enum tfoo[]);
插入:
INSERT INTO foo(foo_enum) VALUES('{foo,bar}');
或者
INSERT INTO foo(foo_enum) VALUES(ARRAY['foo','bar']::tfoo[]);
另一种方法是使用另一个表来存储枚举和 foo 表的外键。示例:
CREATE TABLE foo (foo_id serial primary key);
CREATE TABLE foo_enums (foo_id integer references foo(foo_id), value tfoo);
然后他们将多个值插入到 foo_enums
中:
INSERT INTO foo(foo_id) VALUES(nextval('foo_id_seq'));
INSERT INTO foo_enums(foo_id, value) VALUES
(currval('foo_id_seq'), 'foo'),
(currval('foo_id_seq'), 'bar');
关于postgresql - 在 PostgreSQL 中插入多个 ENUM 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15072869/