`
mamaoyuan625
  • 浏览: 173432 次
  • 性别: 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

分享到:
评论

相关推荐

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

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

    oracle实验报告

    Oracle数据库自带的几个触发器(最简单触发器格式)示例如下: -- create or replace trigger MDSYS.sdo_drop_user after drop on DATABASE declare stmt varchar2(200); BEGIN if dictionary_obj_type = 'USER...

    Oracle经验技巧集锦

    查看对象的依赖关系(比如视图与表的引用) 在Oracle中建一个编号会自动增加的字段,以利于查询 在数据库触发器中使用列的新值与旧值

    oracle数据库经典题目

    撤销表空间专门进行回退信息的自动管理。临时表空间是专门进行临时段管理的表空间。用户表空间用于分离不同应用的数据,而且能够减少读取数据文件时产生的I/O冲突。 6. 说明Oracle 10g数据库文本初始化参数文件与...

    delete from 表名与truncate table 表名区别

    1.delete不能使自动编号返回为起始值。但是truncate能使自动增长的列的值返回为默认的种子 2.truncate只能一次清空,不能按条件删除。但是delete可以按条件清除部分记录。 3.truncate清空数据表性能(速度)比delete...

    经典SQL脚本大全

    │ 触发器自动维护已用&未用编号.sql │ 连续编号.sql │ 防止重复的示例.sql │ 项目编号=各项目独立流水号&各年不同.sql │ ├─第06章 │ │ 6.1.1 NULL对IN的查询的影响及解决示例.sql │ │ 6.1.2 各种联接的...

    Sqlserver2000经典脚本

    类别自动生成编号示例.sql │ 自已做标识列的例子.sql │ 触发器自动维护已用&未用编号.sql │ 连续编号.sql │ 防止重复的示例.sql │ 项目编号=各项目独立流水号&各年不同.sql │ ...

    数据库设计规范-编码规范.docx

    Ø 逻辑结构对象:是指数据库对象的管理元素,包括数据库名称、表空间、表、字段/域、视图、索引、触发器、存储过程、函数、数据类型、数据库安全性相关的设计、数据库配置有关的设计以及数据库中其他特性处理相关...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例022 自动类型转换与强制类型转换 33 2.2 运算符 34 实例023 加密可以这样简单(位运算) 34 实例024 用三元运算符判断奇数和偶数 35 实例025 更精确地使用浮点数 35 实例026 不用乘法运算符实现2×16 37 实例027...

    asp.net知识库

    HttpModule 实现 ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web开发: 使用URL重写WEB主题切换 如何在Asp.Net1.1中实现页面模板(所谓的...

    精髓Oralcle讲课笔记

    -- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unlock; --那么这个用户名就能使用了。 --(默认全局数据库名orcl) 1、...

    C#.net_经典编程例子400个

    24 实例022 非矩形窗体 24 实例023 建立字体形状窗体 25 实例024 控件随窗体自动调整 26 实例025 带分隔栏的窗体 27 实例026 随机更换主界面背景 27 1.7 多媒体光盘 28 实例027 ...

    C#程序开发范例宝典(第2版).part13

    实例060 在RichTextBox控件中实现项目编号功能 71 实例061 设置RichTextBox控件中文本对齐方式 74 2.4 ListBox控件应用 77 实例062 在ListBox控件间交换数据 77 实例063 将数据库数据添加到ListBox控件中 78 ...

Global site tag (gtag.js) - Google Analytics