如何在Oracle数据库中存储具有枚举字段类型的对象

阿卡·贾沃瑞克(Akka Jaworek)

我的程序中有以下类,我想将此类存储在oracle 11c数据库中,我知道如何存储大多数信息,但如何存储枚举类型的usertype?我对数据模型有以下方案:

这里应该是图片

这是亩用户类

public class User {

    @Id
    protected Identity<User> id;

    protected String identifier;

    protected UserType type;

    protected String password;

    public static enum UserType {
        CUSTOMER, COURIER;
    }

}
亚历克斯·普尔

只有两个固定值,最简单的方法是带有检查约束

create table users (
  id number primary key,
  identifier varchar2(30),
  password raw(64),
  type varchar2(8) not null check (type in ('CUSTOMER', 'COURIER'))
);

check (type in ('CUSTOMER', 'COURIER'))是不言自明的;Oracle检查为该列提供的值是这两个值之一。假设您希望始终对其进行设置,请not null确保不能将其保留为空。

insert into users (id, identifier, password, type)
values (1, 'Bob', null, 'CUSTOMER');

1 row inserted.

insert into users (id, identifier, password, type)
values (2, 'Alice', null, null);

ORA-01400: cannot insert NULL into ("SCHEMA"."USERS"."TYPE")

insert into users (id, identifier, password, type)
values (2, 'Alice', null, 'INVALID');

ORA-02290: check constraint (SCHEMA.SYS_C00113048) violated

使用命名约束会更好一些:

create table users (
  id number,
  identifier varchar2(30),
  password raw(64),
  type varchar2(8) not null,
  constraint users_pk primary key (id),
  constraint users_type_ck check (type in ('CUSTOMER', 'COURIER'))
);

更一般地,特别是对于可以更改的值,您将具有一个查询表和一个外键关系:

create table user_types (
  id number,
  description varchar2(8),
  constraint user_types_pk primary key (id),
  constraint user_types_desc_uk unique (description)
);

create table users (
  id number,
  identifier varchar2(30),
  password raw(64),
  type_id number not null,
  constraint users_pk primary key (id),
  constraint users_type_fk foreign key (type_id) references user_types(id)
);

insert into user_types (id, description) values (1, 'CUSTOMER');
insert into user_types (id, description) values (2, 'COURIER');

insert into users (id, identifier, password, type_id)
values (1, 'Bob', null, 1);

1 row inserted.

insert into users (id, identifier, password, type_id)
values (2, 'Alice', null, null);

ORA-01400: cannot insert NULL into ("SCHEMA"."USERS"."TYPE_ID")

insert into users (id, identifier, password, type_id)
values (2, 'Alice', null, 3);

ORA-02291: integrity constraint (SCHEMA.USERS_TYPE_FK) violated - parent key not found

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Django的数据库中存储具有复杂数据字段的python对象?

来自分类Dev

如何将值保存到具有相关字段类型的数据库中?

来自分类Dev

如何从 Oracle 数据库中的对象类型生成 XML

来自分类Dev

如何在Laravel中获取数据库字段类型?

来自分类Dev

如何在 MySql 数据库中存储对象?

来自分类Dev

如何在数据库中存储递归对象?

来自分类Dev

如何在表单中使用hstore数据类型字段并将其存储在Rails 4中的数据库中?

来自分类Dev

如何在OpenERP7中使数据库字段具有默认值?

来自分类Dev

如何在对象数组列表中存储具有自己的数据类型的列表

来自分类Dev

具有多个允许值类型的数据库字段

来自分类Dev

具有多个允许的值类型的数据库字段

来自分类Dev

如何使用swift3从firebase数据库中存储具有多个字符串的对象

来自分类Dev

如何在C#中的数据库中创建带有模块化可搜索字段的对象?

来自分类Dev

如何在具有特殊字符的 Postgresql 数据库中调用字段名称?

来自分类Dev

Oracle数据库中具有多个字段的条件唯一约束

来自分类Dev

如何在Java中显示数据库中的所有枚举值

来自分类Dev

如何在对象中存储数据并将其保存到SQLite数据库中?

来自分类Dev

如何在Django中没有数据库的情况下存储用于通信的对象?

来自分类Dev

如何在SQL数据库的单个字段中存储多个值?

来自分类Dev

如何在数据库表的字段中存储无限量的东西?

来自分类Dev

如何在数据库字段中存储多个图像引用

来自分类Dev

如何在ORACLE数据库的表中的JSON BLOB字段中创建视图?

来自分类Dev

如何枚举Redis数据库中的所有键?

来自分类Dev

drupal字段集合如何存储在数据库中?

来自分类Dev

如何将经典sql查询的结果存储在具有休眠状态的数据库中没有实体表的对象中?

来自分类Dev

如何列出特定表中的列具有特定类型的所有数据库?

来自分类Dev

如何在具有图像列的数据库中插入没有图像的数据?

来自分类Dev

Django的。如何从数据库中的对象中删除字段?

来自分类Dev

如何在Java中的字段中存储变量类型的对象?

Related 相关文章

  1. 1

    如何在Django的数据库中存储具有复杂数据字段的python对象?

  2. 2

    如何将值保存到具有相关字段类型的数据库中?

  3. 3

    如何从 Oracle 数据库中的对象类型生成 XML

  4. 4

    如何在Laravel中获取数据库字段类型?

  5. 5

    如何在 MySql 数据库中存储对象?

  6. 6

    如何在数据库中存储递归对象?

  7. 7

    如何在表单中使用hstore数据类型字段并将其存储在Rails 4中的数据库中?

  8. 8

    如何在OpenERP7中使数据库字段具有默认值?

  9. 9

    如何在对象数组列表中存储具有自己的数据类型的列表

  10. 10

    具有多个允许值类型的数据库字段

  11. 11

    具有多个允许的值类型的数据库字段

  12. 12

    如何使用swift3从firebase数据库中存储具有多个字符串的对象

  13. 13

    如何在C#中的数据库中创建带有模块化可搜索字段的对象?

  14. 14

    如何在具有特殊字符的 Postgresql 数据库中调用字段名称?

  15. 15

    Oracle数据库中具有多个字段的条件唯一约束

  16. 16

    如何在Java中显示数据库中的所有枚举值

  17. 17

    如何在对象中存储数据并将其保存到SQLite数据库中?

  18. 18

    如何在Django中没有数据库的情况下存储用于通信的对象?

  19. 19

    如何在SQL数据库的单个字段中存储多个值?

  20. 20

    如何在数据库表的字段中存储无限量的东西?

  21. 21

    如何在数据库字段中存储多个图像引用

  22. 22

    如何在ORACLE数据库的表中的JSON BLOB字段中创建视图?

  23. 23

    如何枚举Redis数据库中的所有键?

  24. 24

    drupal字段集合如何存储在数据库中?

  25. 25

    如何将经典sql查询的结果存储在具有休眠状态的数据库中没有实体表的对象中?

  26. 26

    如何列出特定表中的列具有特定类型的所有数据库?

  27. 27

    如何在具有图像列的数据库中插入没有图像的数据?

  28. 28

    Django的。如何从数据库中的对象中删除字段?

  29. 29

    如何在Java中的字段中存储变量类型的对象?

热门标签

归档