Oracle 做主键自增序列
时间: 2023-12-21 11:53:27 浏览: 94
在 Oracle 中,可以使用序列 (sequence) 来实现主键自增。序列是一种对象,它生成唯一的数字序列,可以被用作主键的值。以下是在 Oracle 中创建序列并将其用作主键自增的示例:
1. 创建序列
```
CREATE SEQUENCE my_sequence START WITH 1 INCREMENT BY 1;
```
这将创建一个名为 `my_sequence` 的序列,起始值为 1,每次递增 1。
2. 创建表并使用序列作为主键
```
CREATE TABLE my_table (
id NUMBER(10) PRIMARY KEY,
name VARCHAR2(50)
);
CREATE OR REPLACE TRIGGER my_table_trigger
BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
SELECT my_sequence.NEXTVAL INTO :NEW.id FROM dual;
END;
```
这将创建一个名为 `my_table` 的表,其中包含一个名为 `id` 的主键列。在表上创建一个触发器,在每次插入新行之前自动将序列的下一个值分配给 `id` 列。
现在可以向 `my_table` 表中插入新行,并且 `id` 列的值将自动从序列中获取:
```
INSERT INTO my_table (name) VALUES ('John');
INSERT INTO my_table (name) VALUES ('Jane');
```
这将向 `my_table` 表中插入两行,`id` 列的值将分别为 1 和 2。
注意:在 Oracle 12c 及以上版本中,可以使用 IDENTITY 列来实现主键自增。该功能类似于其他数据库中的 AUTO_INCREMENT。
阅读全文