你的需求有点奇怪。通常事情不会只是在数据库中“发生”,而且您不必处理它。相反,您决定更改应用程序中的内容,同时更改代码和迁移数据。
话虽如此,如果您想确保您的数据与一组众所周知的值一致,您可以创建库表。在你的情况下:
create table STORE (status varchar(32)) -- your table
create table LIB_STORE_STATUS (status varchar(32) unique) -- a lib table for statuses
alter table STORE add constraint FK_STORE_STATUS foreign key (status) references LIB_STORE_STATUS(status) -- constraints the values in your STORE table
然后:
insert into STORE values ('A') -- fails
insert into LIB_STORE_STATUS values ('A')
insert into STORE values ('A') -- passes
有了这个,您只需要确保您的 lib 表始终与您的代码同步(即使用 JPA@Enumerated(EnumType.STRING)
映射策略时的枚举名称)。