`
wlh269
  • 浏览: 459488 次
  • 性别: 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 没有内置的自增字段,我们仍然可以利用序列和触发器来实现这一需求...

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

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

    创建oracle数据库中表的主键和自增

    在Oracle数据库中实现自增主键是一项常见但非常重要的功能。这不仅有助于确保数据的唯一性,还能简化开发过程中的某些环节,尤其是在需要自动增长的主键时。下面将详细介绍如何通过序列(Sequence)和触发器...

    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....

    MyCat主键自增字段开启1

    值为12表示使用本地内存作为序列生成器,这通常适用于小型或中型应用,因为它的性能较好,但不适用于高并发环境,可能导致序列冲突。 2. 更新`schema.xml`: 在`schema.xml`中,你需要为涉及主键自增的表添加特定...

    oracle 主键自增相关命令

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

    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

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

    MyBatis Oracle 自增序列的实现方法

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

    django自定义非主键自增字段类型详解(auto increment field)

    `django自定义非主键自增字段类型详解(auto increment field)`这一主题旨在介绍如何在Django中实现这样一个功能。自增字段通常用于记录序列号或者标识符,但默认情况下,Django只支持将主键(`AutoField`)设为自增...

    ORACLE自增主键设置方法

    接下来,我们需要创建一个触发器来实现自增主键的功能。触发器会在特定的数据库操作发生时自动执行一段代码。在这个例子中,我们将在插入新记录时自动为`NID`字段赋值。 ```sql CREATE OR REPLACE TRIGGER tg_test ...

    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