`
mamaoyuan625
  • 浏览: 177169 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

oracle自动编号的触发器

阅读更多
--1:建表
CREATE TABLE  t1 (
       
       tid VARCHAR2(20),
       tname VARCHAR2(20)
       )
--2:自动编号连续的触发器
CREATE OR REPLACE TRIGGER tri_t_t1atu
--在真正insert数据库之前
BEFORE  INSERT 
ON t1  -- on 具体的表
FOR EACH ROW 
DECLARE 
   max_id VARCHAR2(20);
BEGIN 
      SELECT 'TID'||lpad(substr(nvl(max(tid),'TID000'),4,3)+1,3,0) INTO max_id  FROM t1;

      :NEW.tid := max_id;  --把max_id赋给tid列

END;


/*MAX(tid):找出最大值
nvl(MAX(tid),'TID000'):处理null值 
substr(nvl(max(tid),'TID000'),4,3):从第4位开始,截取3位
 +1:截取完后的数字+1;
 lpad(+1后的数字,要满足的位数,不够在left补0);
 'TID'||lpad():字符串连接成最终的 ‘TID000’样子*/
 
/*正确的理解:
·如果要修改新行中的值(:new.字段名 := 值),只能用 before。
·如果不修改,before和after都可以。

before和after的区别:就是能否修改new变量!(至少为什么,这是语法)*/

 3:执行

INSERT INTO t1(tname) VALUES('a');
INSERT INTO t1(tname) VALUES('b');
INSERT INTO t1(tname) VALUES('c');
COMMIT;

 

结果:

1 TID001 a
2 TID002 b
3 TID003 c
4 TID004 a
5 TID005 b
6 TID006 c

分享到:
评论

相关推荐

    Oracle触发器 实例讲解

    Oracle 触发器是一种特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。它主要有以下几个功能: 1. 允许/限制对表的修改:触发器可以控制对表的修改操作,例如限制某些用户对表的...

    触发器使用教程和命名规范

    * 例一:行级触发器之一,用于插入员工记录时自动分配员工编号。 * 例二:行级触发器之二,用于更新员工记录时检查员工状态。 * 例三:INSTEAD OF 触发器,用于在视图上执行插入、更新或删除操作。 * 例四:语句级...

    oracle中自动编码

    ### Oracle中的自动编码 在Oracle数据库管理中,自动编码(Auto-Increment)是一种常见的功能需求,主要用于实现表中某一字段(通常为`主键`)的自动递增填充。这在处理大量数据记录时非常有用,能有效简化数据管理...

    oracle触发器的设计.pdf

    Oracle触发器是数据库管理系统中的一种特殊类型的存储过程,主要用于在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行一系列数据库操作。触发器的设计和实现对于数据库的业务规则和完整性约束有着重要...

    Oracle应用项目—— 触发器实例.pdf

    Oracle数据库中的触发器是数据库对象的一种,用于在特定的数据操作(如INSERT、UPDATE、DELETE)发生时自动执行预定义的PL/SQL代码。触发器能够帮助数据库管理员和开发者实现复杂的数据完整性约束,以及在数据库中...

    Oracle Form自动生成序号

    ### Oracle Form 自动生成序号 #### 知识点概述 在Oracle Forms中,有时我们需要处理复杂的业务数据,例如处理带有父子结构的数据集时,通常需要在表单中自动生成唯一的序号,以确保每一行记录的独特性和有序性。...

    基于Oracle数据库存储过程与触发器的应用.pdf

    《基于Oracle数据库存储过程与触发器的应用》这篇文章深入探讨了如何在Oracle数据库中利用存储过程和触发器来提升系统性能和实现自动化管理。存储过程是预编译的SQL语句集合,可以理解为一个可重复使用的代码模块,...

    oracle存储过程、函数、触发器应用举例

    触发器是一种特殊的存储过程,它是在特定的数据库事件(如插入、删除或更新记录)发生时自动执行的代码段。触发器可用于加强数据完整性、实施业务规则等。 **3.2 创建触发器** 触发器的基本语法如下: ```sql ...

    oracle讲解(表分区,视图,序列,游标,触发器等等)

    序列可以用来生成表的主键、自动编号等。Oracle 提供了多种序列类型,包括整数序列、字符串序列等。 游标 游标是一个指向表或视图的指针,用于读取和操作数据。游标可以用来实现高性能的数据查询和操作。Oracle ...

    Orcal 数据库触发器文件

    - 在员工表(employees)上创建一个在插入新记录时自动为员工编号(employee_id)赋值的触发器: ``` CREATE OR REPLACE TRIGGER trg_employee_id BEFORE INSERT ON employees FOR EACH ROW BEGIN SELECT ...

    oracle数据库编程pdf文档教案

    以及序列(Sequence)的使用,为自动编号字段生成唯一的整数。这部分还会介绍权限和角色的管理,理解Oracle的安全模型。 最后,Java_oracle05.pdf可能涵盖数据库的备份与恢复策略,这是数据库管理员必须掌握的关键...

    oracle初学者必知的100个问题

    序列经常用于主键的自动编号。 以上只是对Oracle初学者可能会遇到的一些基础问题的简单介绍。实际上,Oracle数据库技术涵盖的内容非常广泛,包含了数据存储、管理、优化、安全性、网络通信等多个方面。对于初学者来...

    Navicat Premium中Oracle创建主键自增的方法

    到此这篇关于Navicat Premium中Oracle创建主键自增的方法的文章就介绍到这了,更多相关Navicat Premium主键自增内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!

    oracle创建表示例

    根据提供的文件信息,本文将详细解释Oracle数据库中的表创建、序列及触发器的使用方法,特别关注于如何实现主键自增长功能。 ### Oracle 创建表示例 #### 1. 创建学生表 (Student Table) 首先来看如何创建一个...

    oracle job实例 测试通过

    Oracle数据库提供了丰富的功能,包括序列、表、触发器、过程和作业调度,这些功能结合在一起,可以实现复杂的数据管理、自动化任务和错误处理。通过对上述代码的理解,我们可以看到Oracle数据库的强大能力和灵活性,...

    2022年中南大学oracle实验报告.docx

    在本篇实验报告中,中南大学的学生们进行了Oracle数据库的相关操作,主要涉及存储过程的综合练习,以解决自动编号问题。以下是对实验内容的详细解释: 首先,实验的目的是通过实际操作来熟悉Oracle数据库环境,包括...

    老二牛车第八章上机课触发器和内置程序包.pdf

    根据提供的文件信息,我们可以深入探讨Oracle数据库中的两个关键概念——触发器与内置程序包,并具体分析文件中提及的两种触发器实例。 ### 触发器概述 触发器是一种存储过程,它定义为当特定事件(如数据修改)...

    达内培训内部资料oracle讲义

    3. 序列、同义词与约束:序列用于自动编号,同义词简化对象引用,约束则保证数据完整性。 四、数据库备份与恢复 Oracle提供了多种备份和恢复策略,包括物理备份、逻辑备份、RMAN备份等。讲义可能涵盖: 1. 冷备份与...

    oracle设定自增长列

    总之,通过上述步骤,我们不仅创建了一个具有自增长主键的表,还通过序列和触发器的组合使用,确保了该主键能够自动递增,提供了一种高效且安全地管理表中记录唯一标识符的方法。这种方法在Oracle数据库中非常实用,...

Global site tag (gtag.js) - Google Analytics