`
wlh269
  • 浏览: 455788 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

不依赖于序列,只用触发器实现主键自增

阅读更多
哈!各位大虾,帮我,我想要这样的触发效果:
表结构例如是这样:create table TB(N char(10) primary key,M char(10))
当我首次将数据插入列M的时候,N自动生成0001
再插入列M第二行的时候,N自动生成0002
以此类推,每插入M时,N就自动递增1,前面的0不能省略,同时还有个要求,该触发器不能依赖序列。

create or replace trigger tri_input_no 
before insert on mytb 
for each row 
begin 
declare 
cursor c is 
select 's' from mytb; 
rec varchar2(6); 
begin 
open c; 
fetch c into rec; 
if c%rowcount = 0 then 
select '0001' into :new.mname from dual; 
else 
select (select lpad(substr(max(mname), 2) + 1, 4, '0') from mytb) 
into :new.mname 
from dual; 
end if; 
end; 
end; 


刚写出来,测试过的,把表和字段改下就行了
分享到:
评论

相关推荐

    oracle通过触发器,实现序列自增

    ### Oracle通过触发器实现序列自增 在Oracle数据库中,序列是一种非常实用的对象,它可以用于自动产生唯一的数值。本文将详细介绍如何通过触发器与序列相结合的方式,在Oracle数据库中实现记录的自增功能。 #### ...

    如何实现Oracle自增,序列,触发器都有

    在Oracle数据库中实现主键自增功能可以通过创建序列(sequence)与触发器(trigger)相结合的方式实现。这种方式不仅能够确保数据表中的主键唯一性,还能自动递增,极大地简化了开发人员的工作。 #### 创建Sequence...

    Oracle主键自增的办法

    当新行插入到表中时,触发器会自动将序列的下一个值赋给指定的自增字段,从而实现了类似其他数据库的自增主键功能。 通过这种方式,即使 Oracle 没有内置的自增字段,我们仍然可以利用序列和触发器来实现这一需求...

    oracle触发器实现主键自动增长

    总之,通过Oracle的触发器和序列,我们可以轻松地实现主键的自动增长,这不仅简化了数据管理流程,也提高了数据的一致性和安全性。然而,在具体应用中,还需根据实际业务需求和系统环境,合理设计和优化触发器与序列...

    Oracle创建主键自增表(sql语句实现)及触发器应用

    在Oracle数据库中,创建主键自增表是一项常见的任务,这有助于确保每个新插入的记录都有一个唯一的标识符。下面将详细讲解如何通过SQL语句实现这一功能,并结合触发器的应用来自动增加主键。 首先,我们创建一个...

    oracle主键自增

    oracle 数据库主键自增脚本 --第一步,创建表 --第二步,创建自增序列 --第三步,创建触发器

    oracle 主键自增 sequence

    ### Oracle 主键自增 Sequence 的实现与应用 #### 一、Sequence 的概念及用途 在 Oracle 数据库中,`Sequence` 是一种用于生成一系列唯一数值的对象。这些数值可以按照特定的规则递增或递减,并且可以设定是否循环...

    Oracle自增序列和触发器生成工具.zip

    Oracle数据库在设计关系型数据库时,常常需要使用到自增序列和触发器来实现自动增长的主键。自增序列可以确保数据的唯一性,而触发器则可以在特定事件(如INSERT、UPDATE或DELETE)发生时执行一些额外的操作。本...

    mycat 主键自增代码

    Mycat 通过在每个分片节点上维护各自的自增序列,确保每个节点的自增序列不重叠。这需要在 Mycat 的配置文件 server.xml 中配置全局序列(global sequence),并为每个分片节点指定序列器(sequence handler)。 4....

    oracle 主键自增相关命令

    - 在Oracle中,主键类型通常为`NUMBER`,但不直接支持自增序列。需要通过上面所述的序列和触发器机制来实现。 - 如果尝试在`INSERT`语句中为`id`指定值,而这个值已经存在于序列中,那么将会导致冲突,因为触发器...

    Mysql面试题主键自增

    1. 数据库性能:自增主键有利于B树索引的构建,提高查询效率,但过大的自增步长可能会影响索引的性能。 2. 并发插入:在多线程环境下,需要注意并发插入时可能导致的自增值冲突。 3. 主键选择:不是所有情况都适合用...

    oracle数据库主键自增并且返回主键值

    一、创建序列 1.1、直接在PLSQL中设置 1.2、命令创建 create sequence seq_users ##创建序列seq_users increment by 1 ## 步长,每次加1 start with 1 ##从1开始 minvalue 1 ##最小值 maxvalue 9999999 ##最大值 ...

    详解Oracle序列和触发器的使用

    序列用于生成唯一的整数序列,常作为主键,而触发器则允许在特定事件发生时自动执行代码,两者结合可以实现数据的自动管理和更新,提高数据管理的效率和准确性。正确理解和使用这些概念,对于优化Oracle数据库的应用...

    主键自增功能测试报告1

    这表明尽管主键自增功能在设计和实现上已经相当成熟,但仍需持续监控和优化,以应对各种复杂的使用场景和异常情况,确保系统的可靠性和稳定性。 通过这些详尽的测试,我们能够对主键自增功能有深入的理解,确保其在...

    JPA主键策略(针对数据库自增字段重置后无效检查项)

    seqhilo是一种通过hilo算法实现的主键生成策略,但是主键历史保存在Sequence中。这种策略适用于支持Sequence的数据库,如Oracle。 increment increment是一种插入数据的时候hibernate会给主键添加一个自增的主键的...

    MyBatis Oracle 自增序列的实现方法

    在Oracle数据库中,由于没有像MySQL的`auto_increment`或者SQL Server的`IDENTITY`这样的内置机制,所以自增序列的实现通常需要借助于Oracle的`SEQUENCE`对象。MyBatis,作为一个强大的ORM(对象关系映射)框架,...

    oracle实现属性的自增

    Oracle 数据库中实现属性的自增是通过序列和触发器来实现的。当给表中插入数据时触发触发器,触发器从序列中得到相应的数值放入相应的位置,这样实现属性的自增。 知识点一: Oracle 中没有 auto_increment 属性 ...

    解决spring自增型主键问题

    SQL Server 2008中的自增型主键,通常通过设置列属性为`IDENTITY`来实现。这种方式可以自动为每一行新插入的数据生成一个唯一的、连续递增的整数值作为主键。然而,在实际应用中,可能会遇到以下问题: 1. **并发...

    SQL语句_设置序列和触发器

    通过以上介绍可以看出,序列和触发器是数据库中非常实用的功能,可以帮助开发者实现更高效的数据管理和操作。合理地利用序列和触发器不仅可以简化编程工作,还能提升系统的整体性能。在实际应用中,可以根据具体需求...

    powerdesigner创建oracle_数据库表,设置表主键列为自动增长

    为了实现主键的自动增长功能,我们需要通过创建一个序列(sequence)来实现这一目标。 1. **在表视图中设置:** - 双击表视图,打开`Table Properties`对话框。 - 转到`Columns`选项卡,选择要作为主键的列。 - ...

Global site tag (gtag.js) - Google Analytics