postgresql - 在 PostgreSQL 中插入多个 ENUM 值

标签 postgresql insert enums

是否可以在 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/

相关文章:

c - 如何在 C 语言的二叉搜索树中正确插入/删除?

mysql - 在 INSERT ON DUPLICATE 语句期间以什么顺序调用 mysql 触发器?

c# - 可以在 Linq-to-SQL 的多个实体中使用相同的 Enum 吗?

laravel - WhereRaw Laravel 变量

sql - 更新列值 PostgreSQL

postgresql - 如何将 postgres 12 转储文件恢复到 postgres 11.5

PHP - 将时间类型的变量插入到 MySQL 时间类型的列中

java - 如何使用 Java 泛型以便为返回类型为 List<Interface> 的方法返回 List<InterfaceImpl>

php - Laravel Php 8.1 如何将枚举案例转换为数组以选择输入

sql - 更新 Postgres 的竞争条件(读取已提交)