【转载】在 Oracle 中设置自增列
database Oracle 【转载】在 Oracle 中设置自增列 如果你经常使用 MySQL,你肯定对 AUTO_INCREMENT 非常熟悉,因为经常要用到它。 一、什么是自增列 ? 自增列是数据库中值随插入的每个行自动增加的一列。它最常用于主键或 ID 字段,这样每次增加一行时,不用指该字段的值,它就会自动增加,而且是唯一的。 当在 MySQL 中定义列时,我们可以指定一个名为 AUTO_INCREMENT 的参数。然后,每当将新值插入此表中时,放入此列的值比最后一个值加 1。 但很不幸,Oracle 没有 AUTO_INCREMENT 功能。 那要如何在Oracle中做到这一点呢? 二、在 Oracle 11g 中设置自增字段 1. 创建表 首先创建一张用于测试的表: CREATE TABLE "TEST" ( ID NUMBER(11) PRIMARY KEY, NAME VARCHAR2(50BYTE) NOT NULL ); 2. 创建序列 然后创建一个名为 TEST_ID_SEQ 的序列(序列名称自己随意设定): CREATE SEQUENCE TEST_ID_SEQ INCREMENT BY 1 START WITH 100 MAXVALUE 999999999 NOCYCLE NOCACHE; 如果要删除序列,可以使用下面的 SQL 命令: DROP SEQUENCE TEST_ID_SEQ; 对 SEQUENCE 的一些说明: INCREMENT BY 用于指定序列增量(默认值:1),如果指定的是正整数,则序列号自动递增,如果指定的是负数,则自动递减。 START WITH 用于指定序列生成器生成的第一个序列号,当序列号顺序递增时默认值为序列号的最小值,当序列号顺序递减时默认值为序列号的最大值。 MAXVALUE 用于指定序列生成器可以生成的组大序列号(必须大于或等于 START WITH,并且必须大于 MINVALUE),默认为 NOMAXVALUE。 MINVALUE 用于指定序列生成器可以生成的最小序列号(必须小于或等于 START WITH,并且必须小于 MAXVALUE),默认值为 NOMINVALUE。 CYCLE 用于指定在达到序列的最大值或最小值之后是否继续生成序列号,默认为 NOCYCLE。 CACHE 用于指定在内存中可以预分配的序列号个数(默认值:20)。 到这一步其实就已经可以实现字段自增,只要插入的时候,将 ID 的值设置为序列的下一个值 TEST_ID_SEQ.NEXTVAL 就可以了: ...