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

Oracle表触发器并写入序列值

阅读更多
--创建 序列 seq_1
drop sequence seq_1;
create sequence seq_1 
minvalue 1 
maxvalue 999999999999999999999999999 
start with 100000000000000
increment by 1 
nocache;

drop table test_Depart;
create table test_Depart    ( 
     did  varchar2(32)    not null primary key, 
     dname  varchar2(32)   not null 
); 


--建解发器代码为 
create or replace trigger tri_test_id
  before insert on test_Depart   --test_Depart 是表名
  for each row
declare
  nextid varchar2(32);
begin
  IF :new.did IS NULL or :new.did=0 THEN --did是列名
     --取得年度
    select to_char(sysdate,'yyyy')||seq_1.nextval
    into nextid
    from sys.dual;
    :new.did:=nextid;
  end if;
end tri_test_id;


-- for test
--select to_char(sysdate,'yyyy')||seq_1.nextval from dual;

--insert into test_Depart(dname) values('部门1');


或者
--建解发器代码为 
create or replace trigger tri_test_id
  before insert on test_Depart   --test_Depart 是表名
  for each row
declare
  nextid number;
begin
  IF :new.did IS NULL or :new.did=0 THEN --did是列名
    select seq_1.nextval
    into nextid
    from sys.dual;
    :new.did:=nextid;
  end if;
end tri_test_id;


或者
--建解发器代码为 
create or replace trigger tri_test_id
  before insert on test_Depart   --test_Depart 是表名
  for each row
declare
  nextid number;
begin
  IF :new.did IS NULL or :new.did=0 THEN --did是列名
    select to_number(to_char(sysdate,'yyyymmddHH24miss'))
    into nextid
    from sys.dual;
    :new.did:=nextid;
  end if;
end tri_test_id;
分享到:
评论

相关推荐

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

    - `NEXTVAL`:返回并分配下一个序列值。 - `CURRVAL`:返回最近一次分配的序列值。 3. **删除序列**: ```sql DROP SEQUENCE sequence_name; ``` #### 二、使用触发器实现序列自增 接下来,我们将结合触发器...

    oracle触发器语法要点

    在这个例子中,当向`tab_user`表中插入记录时,触发器会自动为`id`字段赋值下一个可用的序列值。 ##### 示例3:记录每个部门的人数和总工资 为了跟踪每个部门的人数和总工资变化情况,可以创建一个映射表以及一个...

    Oracle触发器用法实例详解

    Oracle触发器是数据库管理系统中的一种特殊程序,它在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行。触发器主要用于实现复杂的数据一致性、强制业务规则、提供审计跟踪和自动化某些操作,例如自增...

    Oracle 11i 表结构

    在Oracle 11i中,表是存储数据的基本单元之一,通过合理的表设计可以提高数据处理效率并简化应用程序的开发工作。 #### 二、Oracle 11i 表结构设计原则 1. **规范化**:表设计时应遵循规范化的原则,减少数据冗余...

    mysql-oracle数据同步

    2. **编程方式**:通过编写Java、Python或其他语言的脚本,连接MySQL和Oracle数据库,读取MySQL数据,处理后写入Oracle。这种方式需要对数据库API有深入理解,比如JDBC、ODBC等。 3. **数据库复制服务**:Oracle...

    oracle goldengate11支持的复制对象列表

    Oracle GoldenGate 11还支持其他数据库对象的复制,包括表、索引、视图、触发器、序列等。在实际应用中,理解这些数据类型的支持情况可以帮助用户正确配置复制过程,确保数据的一致性和完整性。同时,需要注意的是,...

    Oracle体系结构简介

    7. **其他对象**:Oracle还支持多种高级特性,如视图(虚拟表)、序列(自动递增的数字序列)、过程和函数(PL/SQL代码块)、包(过程和函数的集合)、触发器(预定义的事件响应程序)和同义词(简化对远程对象的...

    Java导出oracle表结构实例详解

    本实例中,核心是通过执行SQL查询来获取Oracle数据库中的表、视图、索引、存储过程、序列和触发器的DDL(Data Definition Language)语句,这些DDL语句能够重建对应的数据库对象。 首先,程序定义了一个SQL查询,该...

    oracle数据变化的捕捉及与XML格式的转换实现.pdf

    Oracle触发器是一种存储过程,由特定的数据库事件(如INSERT、UPDATE、DELETE)触发,用于实现自动的数据操作。在数据同步场景下,可以通过创建触发器来监控Oracle表中的数据变化。例如,为每个需要同步的表创建增、...

    Oracle试题及答案

    - **CACHE和NOCACHE**: 控制序列值是否被缓存。 - **MAXVALUE和MINVALUE**: 设置序列的最大和最小值。 #### 13. 强制创建视图 - **题目解析**:使用FORCE选项可以创建带有错误的视图。 - **知识点说明**: - **...

    oracle试题整理.docx

    7. **获取序列值**:使用`SELECT seq1.NEXTVAL FROM DUAL`可以获取序列seq1的下一个值,而`SELECT seq1.CURRVAL FROM DUAL`获取当前值,但在使用currval之前,必须先使用nextval。 8. **LGWR进程**:LGWR(Log ...

    Oracle数据库经典学习教程

    - 包括表、视图、存储过程、触发器等,用于组织和管理数据。 - 表是最基本的对象,用于存储数据。 - 视图是基于一个或多个表的虚拟表,可以简化数据访问。 - **同义词** - 同义词类似于别名,用于简化表、视图...

    oracle性能优化-比较全面

    常见的解决方法是将常用的大对象如存储过程、触发器和序列保留在Shared Pool中,使用`dbms_shared_pool.keep()`函数。 5. **匿名PL/SQL优化**:过大的匿名PL/SQL块应分解为小块或转换为存储过程,以减少内存需求。 ...

    Oracle学习笔记

    通过控制台,管理员可以创建和管理用户、表、DBLink、同义词、触发器、定时器、视图、序列、函数以及存储过程。 四、连接到其他服务器 Oracle的DBLink功能允许远程连接到其他Oracle服务器,实现跨数据库的数据交互...

Global site tag (gtag.js) - Google Analytics