詳細なOracleデータベースシーケンス
データベース内のシーケンス
シーケンスパラメータの概要:
CREATE SEQUENCE sequence //创建序列名称 [INCREMENT BY n] //递增的序列值是 n 如果 n 是正数就递增,如果是负数就递减 默认是 1 [START WITH n] //开始的值,递增默认是 minvalue 递减是 maxvalue [{MAXVALUE n | NOMAXVALUE}] //最大值 [{MINVALUE n | NOMINVALUE}] //最小值 [{CYCLE | NOCYCLE}] //循环/不循环 [{CACHE n | NOCACHE}];//分配并存入到内存中
テーブル作成の例:
-- create table create table user.t_table_name_des ( id number(36) not null, fund_code varchar2(10) not null, fund_name varchar2(64), recommended_topic varchar2(1000) not null, link_url varchar2(255) not null, icon_url varchar2(255), push_status number(1) default 0 not null, client_ids CLOB, create_date date not null, update_date date not null, constraint pk_table_name_des primary key (id) ); -- add comments comment on table user.t_table_name_des is '表名称'; comment on column user.t_table_name_des.id is '主键'; comment on column user.t_table_name_des.fund_code is '字段描述'; comment on column ... -- create sequence create sequence user.seq_table_name_des minvalue 1 nomaxvalue start with 1 increment by 1 cache 20 order;
備考:
varchar(256)の代わりにvarchar(255)を定義します
In contrast to CHAR, VARCHAR values are stored as a 1-byte or 2-byte length prefix plus data. The length prefix indicates the number of bytes in the value. A column uses one length byte if values require no more than 255 bytes, two length bytes if values may require more than 255 bytes. 与CHAR不同,VARCHAR值存储为1字节或2字节长度的前缀加上数据。长度前缀表示值中的字节数。如果值需要不超过255个字节,则列使用一个长度字节,如果值需要超过255个字节,则使用两个长度字节。
BLOBとCLOBはどちらもラージフィールドタイプであり、BLOBはバイナリで格納され、CLOBはテキストを直接格納できます。実際、この2つは交換可能です。または、LOBフィールドを直接使用して2つを置き換えることができます。ただし、ORACLEデータベースをより適切に管理するために、通常、画像、ファイル、音楽などの情報はBLOBフィールドに格納され、ファイルは最初にバイナリに変換されてから格納されます。記事や長いテキストの場合、CLOBはストレージに使用されます。これにより、将来のクエリ、更新、ストレージ、およびその他の操作に非常に便利です。
テーブルフィールド属性の変更:
--添加字段 ALTER TABLE T_TABLE_NAME ADD( MODULE_TYPE NUMBER(4) default 1 NOT NULL, TOP_RANKING CHAR(2) default '0' NOT NULL ); --修改字段描述 COMMENT ON COLUMN T_TABLE_NAME.MODULE_TYPE is '字段描述'; COMMENT ON COLUMN T_TABLE_NAME.TOP_RANKING is '字段描述'; --修改默认值 ALTER TABLE T_TABLE_NAME modify SORT_DIRECTION default '0' --修改字段名 alter table T_TABLE_NAME rename column code to factor_code; --修改字段类型属性 alter table T_TABLE_NAME modify(lab_name varchar2(64));
OracleはSQLレポートを手動で実行しますORA-01400:xxx.IDにNULLを挿入できません問題:
- テーブルに対応するシーケンスを作成し、シーケンス名.NEXTVALを使用して、追加時にIDパラメーターに値を割り当てます。
--从DUAL表中查看对应序列最新的值 SELECT SEQ_TABLE_NAME.NEXTVAL FROM SYS.DUAL; INSERT INTO T_TABLE_NAME ( ID, FUND_CODE, FUND_NAME, SUBJECT, LINK_URL, ICON_URL, ONLINE_DATE, OFFLINE_DATE, IS_EFFECTIVE, CREATE_DATE, UPDATE_DATE ) VALUES ( SEQ_TABLE_NAME.NEXTVAL, '888888', '名称', 'XXX', 'XXX', 'XXX', to_date('06-1月 -21','DD-MON-RR'), to_date('11-1月 -21','DD-MON-RR'), 0, to_date('11-1月 -21','DD-MON-RR'), to_date('11-1月 -21','DD-MON-RR') );
- テーブルに対応するシーケンスを確立し、トリガーを作成します(トリガーは新しく追加されたデータにIDを割り当てます)
現時点では、データを追加し、IDパラメータを指定することはできません
// 触发器SQL 待补充 INSERT INTO T_TABLE_NAME ( FUND_CODE, FUND_NAME, SUBJECT, LINK_URL, ICON_URL, ONLINE_DATE, OFFLINE_DATE, IS_EFFECTIVE, CREATE_DATE, UPDATE_DATE ) VALUES ( '888888', '名称', 'XXX', 'XXX', 'XXX', to_date('06-1月 -21','DD-MON-RR'), to_date('11-1月 -21','DD-MON-RR'), 0, to_date('11-1月 -21','DD-MON-RR'), to_date('11-1月 -21','DD-MON-RR') );
対応するエンティティ:
@Data @Entity @Table(name = "T_TABLE_NAME") public class TTableName extends XxxBaseEntity { private static final long serialVersionUID = -588668888958562391L; @Id @Column(name = "ID") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_TABLE_NAME") @SequenceGenerator(name = "SEQ_TABLE_NAME", sequenceName = "SEQ_TABLE_NAME", allocationSize = 1) private Long id; /** * XXX */ @Column(name = "FUND_CODE") private String fundCode; /** * XXX */ @Column(name = "FUND_NAME") private String fundName; /** * XXX */ @Transient //不存储到数据库,做临时变量 private List<String> clientIds; }
テーブルフィールド属性を変更するためのOracleシーケンスとテーブルの作成
おすすめ
転載: blog.csdn.net/xiangwang2016/article/details/112470229
おすすめ
ランキング