oracle为表主键字段设置自动增长

oracle 专栏收录该内容
3 篇文章 0 订阅
oracle没有自动主键自动增长的功能,那我们得另辟蹊径.

假如有表:

create table product(
    pid number(8) primary key,
    pname varchar2(20) not null       
    );

我们可以使用oracle的序列来实现自动增长.

  • 在数学上,序列是被排成一列的对象(或事件);这样每个元素不是在其他元素之前,就是在其他元素之后。
  • 在oracle中,序列是一数据库对象,利用它可生成唯一的整数。一般使用序列自动地生成主码值。一个序列的值是由特殊的Oracle程序自动生成,因此序列避免了在应用层实现序列而引起的性能瓶颈。在oracle中,序列是唯一、上升、递增量为1、起始值为1、没有上限的一列对象。
-- 为表product创建一个名为produuct_seq的序列
create sequence produuct_seq;

-- 示例:
insert into product values(
       product_seq.nextval,
       '鸡你太美'
)

进阶,使用触发器让oracle自动添加主键自增长:

-- 也需要使用上面创建了的produuct_seq序列
create or replace trigger product_tri   -- 创建一个叫product_tri的触发器
before insert on product 
referencing old as old new as new -- 起别名old new  相当于 :new-->new  作用:解决与列名冲突 如果表中没有new,old列名不写这行也行
for each row -- 行触发器 一行触发一次 不写默认是表级触发器
DECLARE
begin
 select product_tri.nextval into:new.pid from dual;    -- new是新插入的数据,old是原来的数据 begin和end之间出现的new和old需要加上冒号:
end;
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:终极编程指南 设计师:CSDN官方博客 返回首页

打赏作者

蔡徐坤是个程序媛

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值