教你如何通过PL/SQL创建序列和触发器实现表自增字段

假设我们有一个address表,希望实现地址编号address_id的自增

教你如何通过PL/SQL创建序列和触发器实现表自增字段

1.通过PL/SQL创建序列:

首先,新建Sequences对象

教你如何通过PL/SQL创建序列和触发器实现表自增字段

选择序列所有者,并填写序列的起始值、名称和增量等信息,并应用

教你如何通过PL/SQL创建序列和触发器实现表自增字段

可以查看其SQL创建语句

-- Create sequence 
create sequence SEQ_ADDRESS_ID
minvalue 10001
maxvalue 999999999999999999999999999
start with 10001
increment by 1
cache 20;

序列创建完成后,可以通过系统表dual查询

--查询序列当前值
select seq_address_id.currval from dual;
--查询序列下一值
select seq_address_id.nextval from dual;

注:oracle刚创建完序列后用currval查询不了当前值的,得先用nextval查询过后才能进行currval的查询

到此,已经可以实现address表中地址编号字段address_id的自增,通过插入时调用序列的nextval即可

insert into address(address_id,address_name) values(seq_address_id.nextval,'第八大街');

为了使序列的调用方式更加方便,我们接下来要创建一个触发器。

2.通过PL/SQL创建触发器

首先,新建trigger对象

教你如何通过PL/SQL创建序列和触发器实现表自增字段

填写触发器名称,以及下列要素并确定

触发时间(Fires):before、after、instead of
事件(Event):insert、update、delete
表或视图(Table or View):选择需要创建触发器的表

教你如何通过PL/SQL创建序列和触发器实现表自增字段

确定后,会打开触发器程序编辑窗口,我们需要在红框处编写触发器要执行的SQL语句

教你如何通过PL/SQL创建序列和触发器实现表自增字段

这里就是为address表的address_id字段插入自增序列:

select seq_address_id.nextval into :new.address_id from dual;

该触发器在数据库注册了表的侦听,即当指定表address插入记录之前,我们调用序列的nextval获得新值,插入需要自增的字段。 

至此,我们就完成了address表的address_id字段自增,执行插入SQL时,该字段会自动增长

insert into address(address_name) values('第八大街');

需要注意的是,在数据库操作中,触发器的使用对系统资源耗费相对较大。对于容量相对较小的表我们可以忽略触发器带来的性能影响。考虑到大表操作的性能问题, 我们尽可能的减少触发器的使用,改为直接手动调用序列函数即可。

到此这篇关于教你如何通过PL/SQL创建序列和触发器实现表自增字段的文章就介绍到这了,更多相关PL/SQL创建序列和触发器实现表自增字段内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: 教你如何通过PL/SQL创建序列和触发器实现表自增字段

本文链接: https://www.lsjlt.com/news/173567.html (转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢

  • 通过触发器和自增序列实现oracle自增ID

    create sequence seq_tablename        start with 1        increment by 1;  create or replace trigger tri_tablename_insert         b
  • Oracle中如何用序列和触发器实现ID自增

    小编给大家分享一下Oracle中如何用序列和触发器实现ID自增,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!在设计数据库的时候,Oracle中没有类似SQL Server中系统自动分配ID作为主键的功能,这时Oracle可以通
    阅读数:515 oracle %d
  • Mybatis处理ORACLE自增的问题(通过触发器)

    在oracle中创建序列语句并执行:createsequence user_seq start with 1 increment by 1;在oracle创建触发器语句并执行:create or replace trigger
    阅读数:491 oracle 自增 mybatis
  • SQL Server 创建触发器

    -- TABLE INSERTVAL UPDATEVALif (object_id('DATA_SYNC_FH_DJ','TR') is not null)drop trigger DATA_SYNC_FH_DJgocrea
    阅读数:574 sql server 触发器
  • mysql中怎么利用函数和触发器实现非主键自增

    这篇文章给大家介绍mysql中怎么利用函数和触发器实现非主键自增,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。函数set global log_bin_trust_function_creators=1;DELIMI
    阅读数:305 mysql
  • MySQL表怎么创建自增字段

    本篇内容介绍了“MySQL表怎么创建自增字段”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!注:如果使用新的自增互斥方式,对于replicat
    阅读数:639 mysql
  • SQL Server触发器中表的特定字段更新时如何触发Update触发器

    SQL Server触发器中表的特定字段更新时如何触发Update触发器,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。代码如下:create trigger T
    阅读数:535 sql server update
  • MySQL如何创建触发器

    本文实例为大家分享了MySQL创建触发器的具体代码,供大家参考,具体内容如下先来个实例:#建表DROP TABLE IF EXISTS t_attendance;CREATE TABLE t_attendance (job_no VA
    阅读数:370 mysql 触发器
  • 创建更新触发器

    用途:一张表里面的字段更新,自动触发触发器,触发器会改变添加的字段的值,然后根据添加的字段的值改变前和改变后来判断哪些表已update,再业务层面添加过滤器,过滤那些已更新的表一.为表添加字段,并添加默认值alter table Proje
    阅读数:643 创建更新触发器
  • 怎么创建触发器

    怎么创建触发器?针对这个问题,这篇文章给出了相对应的分析和解答,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。什么是触发器?触发器用来在某些操作之后/之前,“自动”执行一些操作。(比如插入了新的学生信息,那么在班级表中应该修改学
    阅读数:467 触发器
  • MySQL中如何创建触发器

    不知道大家之前对类似MySQL中如何创建触发器的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL中如何创建触发器你一定会有所收获的。1. 背景 * 触发器是一种特殊的存储过程,它在插入,
    阅读数:667 触发器 mysql
  • Oracle触发器实现主键自增效果

    这篇文章主要介绍了Oracle触发器实现主键自增,说白了就是数据确认(after)与安全性检查(before),此外触发器不针对select操作,本文给大家介绍的非常详细,需要的朋友参考下吧
  • 怎么创建sql数据库触发器

    本篇文章给大家分享的是有关怎么创建sql数据库触发器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。创建sql数据库触发器的方法是:【create trigger trigger
    阅读数:602 sql 触发器
  • sql触发器如何使用

    这篇文章给大家分享的是有关sql触发器如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  sql中的触发器是对某个表进行操作时而触发的某种条件,可以用CREATE语句创建触发器,DROP语句删除触发器,AL
    阅读数:121 sql触发器
  • mysql触发器简介、创建触发器及使用限制分析

    本文实例讲述了mysql触发器简介、创建触发器及使用限制。分享给大家供大家参考,具体如下:简介SQL触发器是存储在数据库目录中的一组SQL语句。每当与表相关联的事件发生时,即会执行或触发SQL触发器,例如插入,更新或删除。SQL触发器也
    阅读数:934 mysql 触发器
  • mysql怎么创建触发器

    这篇文章给大家分享的是有关mysql怎么创建触发器的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。MySQL创建触发器首先要创建触发器中待存储的表,然后再设定触发器被激活的时刻,最后在满足定义条件时触发,并执行触发
  • oracle中如何通过触发器记录每个语句影响总行数

    这篇文章给大家分享的是有关oracle中如何通过触发器记录每个语句影响总行数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。需求产生: 业务系统中,有一步“抽数”流程,就是把一些数据从其它服务器同步到本
    阅读数:805 oracle
  • MySQL触发器如何创建与删除

    这篇文章主要介绍“MySQL触发器如何创建与删除”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL触发器如何创建与删除”文章能帮助大家解决问题。1.为什么需要触发器有一些表是互相关联的,比如说
    阅读数:461 mysql
  • 游标和触发器

    第八章  游标和触发器 初识游标在PL/SQL块中执行SELECT、INSERT、DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),即缓冲区。游标是指向该区的一个指针,或是命名一个工作区(Work Area)
    阅读数:888 游标和触发器
  • mysql触发器之创建多个触发器操作的示例分析

    这篇文章将为大家详细讲解有关mysql触发器之创建多个触发器操作的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。这次记录的内容mysql 版本必须得是5.7.2+的哈,之前的会不好使的。废话不多说
    阅读数:110 mysql