Oracle主键自动增长不再需手动维护(oracle主键自助增长)
Oracle主键自动增长:不再需手动维护
在Oracle数据库中,通过使用自增主键来确保表的一行记录具有唯一的标识符,这是许多应用程序中非常重要的功能。然而,在过去使用Oracle 11g及以下版本时,开发人员通常需要手动维护主键的自动增长状态,这会增加工作量并增加出错的可能性。 但自从Oracle 12c以后,Oracle开始自动实现主键的自动增长,使开发人员无需再手动维护自增列的状态,下面就让我们一 起来看看它具体是怎样实现的。
当我们创建自增长主键时,需要使用SEQUENCE对象,表示生成一个递增的数字序列,并指定主键列的默认值为NEXTVAL(sequence_name)。 在Oracle 12c中,我们可以在创建表的同时创建SEQUENCE对象,而不是在创建表之前单独创建它们。 如下所示:
CREATE TABLE employees (
emp_ID NUMBER GENERATED BY DEFAULT AS IDENTITY START WITH 1 INCREMENT BY 1 NOT NULL, emp_name VARCHAR2(100) NOT NULL,
---other columns---);
在这个示例中,使用GENERATED BY DEFAULT AS IDENTITY表达式建立了一个自增主键。 Oracle会自动创建对应的SEQUENCE对象,并使用默认的INCREMENT BY 1值,使主键值递增。而在创建表时,可以使用START WITH设置自增列的起始值,这在迁移数据时特别有用。
使用上面的语法,您只需要简单地定义自增列就可以了,像下面这样:
INSERT INTO employees (emp_name) VALUES ('John Doe');
INSERT INTO employees (emp_name) VALUES ('Mary Jane');INSERT INTO employees (emp_name) VALUES ('Mark Smith');
当上面的INSERT语句执行时,生成的主键会自动递增。 您可以使用LAST_INSERT_ID函数检索当前的主键值,如下所示:
SELECT LAST_INSERT_ID() FROM employees;
在Oracle 12c和更高版本中,自增主键是透明和自动的。 这使得开发人员免除了许多以前手动维护主键的烦扰,并且可以更方便地为他们的应用程序编写代码。 此外,SEQUENCE对象还可以用于许多其他目的,例如存储程序中需要使用唯一数字的地方。
Oracle 12c以后的版本的自增主键能够让开发人员更加轻松地创建唯一的表记录,并减少了许多手动维护的麻烦。 如果你的应用程序需要使用自增主键,那么Oracle的自动增长主键功能绝对是值得尝试的。