如何替换H2数据库中的枚举类型?

2022-09-04 06:44:50

MySQL方言:

CREATE TABLE My_Table ( my_column enum ('first', 'second', ... 'last'));

H2方言:

CREATE TABLE My_Table ( my_column ? ('first', 'second', ... 'last'));

在H2中,哪种类型与MySQL中的类型等效?enum


答案 1

我不确定这是否是您要查找的内容,但您可以做的是使用检查约束:

CREATE TABLE My_Table(my_column varchar(255) 
    check (my_column in ('first', 'second', 'last')));

-- fails:
insert into My_Table values('x');

-- ok:
insert into My_Table values('first');

这将适用于H2,Apache Derby,PostgreSQL,HSQLDB,甚至SQLite。我没有测试其他数据库。


答案 2

没有;尽管如此,在任何情况下都不是很好的解决方案,只需使用参考表即可。enum


推荐