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

数据库 触发器二

阅读更多
触发器案例:现有test表,需要针对test表字段C_SEX上的操作,每一次操作都要向一个修改记录表中插入相应的修改的信息。步骤
0 创建表test
1 创建修改记录表 TB_MODIFY_FILED_INFO
2 创建触发器 TRIGGER_TEST_C_SEX_FILED
3 对表进行CRUD操作

0 创建test表
create table TEST
(
  C_ID       VARCHAR2(40) default SYS_GUID() not null,
  C_NAME     VARCHAR2(40),
  C_CID      VARCHAR2(40),
  C_PASSWORD VARCHAR2(40),
  C_SEX      VARCHAR2(40),
  C_ADDRESS  VARCHAR2(255),
  C_TRUENAME VARCHAR2(40),
  C_COMPANY  VARCHAR2(40),
  C_EMAIL    VARCHAR2(40),
  C_FIELD1   VARCHAR2(40),
  C_FIELD2   VARCHAR2(40),
  C_FIELD3   VARCHAR2(40),
  C_CRT_CDE  VARCHAR2(40),
  C_CRT_DATE DATE default sysdate,
  C_UPD_CDE  VARCHAR2(40),
  C_UPD_DATE DATE default sysdate,
  C_DEL      VARCHAR2(1) default '0'
)


1 创建修改记录表 TB_MODIFY_FILED_INFO
create table TB_MODIFY_FILED_INFO
(
  C_ID                    VARCHAR2(40) not null,
  C_TABLE_NAME            VARCHAR2(40) not null,
  C_MODIFY_FIELD          VARCHAR2(40) not null,
  C_CRT_CDE               VARCHAR2(30),
  T_CRT_DATE              DATE,
  C_UPD_CDE               VARCHAR2(30),
  T_UPD_DATE              DATE default SYSDATE,
  C_CONTENT_BEFORE_MODIFY VARCHAR2(40),
  C_CONTENT_AFTER_MODIFY  VARCHAR2(40),
  C_TABLE_ID_MODIFY       VARCHAR2(40)
)
tablespace SYSTEM
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Add comments to the table 
comment on table TB_MODIFY_FILED_INFO
  is '修改记录表';
-- Add comments to the columns 
comment on column TB_MODIFY_FILED_INFO.C_ID
  is '主键';
comment on column TB_MODIFY_FILED_INFO.C_TABLE_NAME
  is '修改表名';
comment on column TB_MODIFY_FILED_INFO.C_MODIFY_FIELD
  is '修改字段';
comment on column TB_MODIFY_FILED_INFO.C_CRT_CDE
  is '创建人';
comment on column TB_MODIFY_FILED_INFO.T_CRT_DATE
  is '创建时间';
comment on column TB_MODIFY_FILED_INFO.C_UPD_CDE
  is '更新人';
comment on column TB_MODIFY_FILED_INFO.T_UPD_DATE
  is '更新时间';
comment on column TB_MODIFY_FILED_INFO.C_CONTENT_BEFORE_MODIFY
  is '修改前内容';
comment on column TB_MODIFY_FILED_INFO.C_CONTENT_AFTER_MODIFY
  is '修改后内容';
comment on column TB_MODIFY_FILED_INFO.C_TABLE_ID_MODIFY
  is '修改表主键';
-- Create/Recreate primary, unique and foreign key constraints 
alter table TB_MODIFY_FILED_INFO
  add constraint PK_TB_MODIFY_FILED_INFO primary key (C_ID)


2 关键时刻到了 创建触发器
create or replace trigger TRIGGER_TEST_C_SEX_FILED
  before update of C_SEX on TEST
  FOR EACH ROW
declare
begin
  if (:new.C_SEX != :old.C_SEX) then
    insert into TB_MODIFY_FILED_INFO
      (C_ID,
       C_TABLE_NAME,
       C_TABLE_ID_MODIFY,
       C_MODIFY_FIELD,
       C_CRT_CDE,
       T_CRT_DATE,
       C_UPD_CDE,
       T_UPD_DATE,
       C_CONTENT_BEFORE_MODIFY,
       C_CONTENT_AFTER_MODIFY)
    values
      (sys_guid(),
       'TEST',
       :new.C_ID,
       'C_SEX',
       :new.C_CRT_CDE,
       :new.C_CRT_DATE,
       :new.c_upd_cde,
       :new.C_upd_date,
       :old.C_SEX,
       :new.C_SEX);
  end if;
end;


进行验证
--对表test的c_sex字段进行操作
update test tt set tt.c_sex = '1' where tt.c_id = '00003'
--查询修改记录表 TB_MODIFY_FILED_INFO 
select t.*, t.rowid from tb_modify_filed_info t

发现确实多了一条记录
更多内容可以baidu,google
分享到:
评论

相关推荐

    SQL数据库触发器 SQL数据库触发器

    SQL数据库触发器的实际应用 触发器是一种特殊类型的存储过程,不由用户直接调用。当使用下面的一种或多种数据修改操作在指定表中对数据进行修改时,触发器会生效:UPDATE、INSERT 或DELETE。触发器可以查询其它表,...

    易飞ERP数据库触发器查询工具

    易飞ERP数据库触发器查询工具,非常实用

    数据库触发器学习资料

    数据库触发器是数据库管理系统中的一种重要机制,它允许在数据修改(INSERT、UPDATE或DELETE)时执行特定的SQL代码或存储过程。SQL触发器的概念源自关系数据库理论,用于实现复杂的数据完整性约束,或者在数据发生...

    SQL数据库 触发器课件

    【SQL数据库触发器详解】 SQL数据库中的触发器是一种特殊的存储过程,它的主要功能是在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行,以此来维护数据的完整性和一致性。触发器的设计旨在增强数据库...

    数据库触发器数据库触发器.ppt

    "数据库触发器" 数据库触发器是一种特殊的存储过程,它可以在特定的事件发生时自动执行,以维护数据库的完整性和一致性。触发器可以在INSERT、UPDATE、DELETE等DML语句之前或之后执行,以便检查和限制用户的操作。 ...

    数据库的触发器实验报告书

    数据库触发器是数据库管理系统中的一种重要机制,它允许在特定的数据操作语言(DML)事件发生时自动执行一段预定义的SQL代码。本实验报告主要围绕如何理解和运用触发器,特别是针对数据完整性的维护,以及在...

    大型数据库触发器介绍

    【大型数据库触发器介绍】 数据库触发器是数据库管理系统中的一种特殊程序,它在特定的事件(如INSERT、UPDATE或DELETE操作)发生时自动执行,用于实现业务规则或复杂的数据约束。在ORACLE和SYBASE这样的大型数据库...

    数据库触发器ppt

    详细介绍了数据库触发器的原理 与开发 使读者能够快速的掌握数据库触发器的开发技术

    oracle数据库触发器实例

    ### Oracle数据库触发器实例解析 #### 一、触发器简介 在Oracle数据库中,触发器是一种存储过程,它被设计为当特定事件(如数据插入、更新或删除)发生时自动执行。触发器可以用于执行复杂的业务逻辑或者数据完整...

    Orcal 数据库触发器文件

    Oracle数据库触发器是数据库管理系统中的一种重要特性,它允许开发者在特定的数据操作(如INSERT、UPDATE、DELETE)之前或之后执行自定义的SQL代码或PL/SQL块。这些代码可以用来实现业务规则、数据验证、审计跟踪等...

    数据库触发器是一种存储过程

    数据库触发器是数据库管理系统中的一种重要机制,它们本质上是预定义的存储过程,可以在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行。SQL Server提供了对触发器的支持,允许用户根据需要创建和定制...

    数据库实验6 触发器

    本次实验的主要目的是让学生深入理解并掌握数据库触发器的使用方法。触发器是一种特殊类型的存储过程,它被自动执行,当特定事件(如数据的插入、更新或删除)发生在指定的表上时触发。通过本次实验,学生将能够: ...

    数据库触发器学习

    数据库的触发器的学习,一些基本的介绍,简单明了,还是很容易理解。

    SQL数据库触发器练习题

    以下是对SQL数据库触发器的详细讲解: 1. 触发器类型: - INSERT触发器:在向表中插入新记录时触发。 - UPDATE触发器:当对表中的记录进行更新时触发。 - DELETE触发器:在删除表中的记录时触发。 2. 触发器的...

    数据库触发器介绍

    ### 数据库触发器详解 #### 引言 在数据库管理系统(DBMS)中,触发器是一种特殊类型的存储过程,被设计成在预定义的数据库事件发生时自动执行。这些事件包括但不限于INSERT、UPDATE、DELETE等数据操作语言(DML)事件...

    C#数据库触发器的使用实例代码

    下面将详细探讨C#如何与数据库触发器配合使用。 首先,让我们理解触发器的基本概念。触发器主要分为三种类型:AFTER、BEFORE和INSTEAD OF,它们分别在数据库操作完成之后、之前或代替实际操作时触发。触发器可以...

    数据库的触发器的创建和使用

    "数据库触发器的创建和使用" 数据库触发器是数据库管理系统中的一种特殊类型的存储过程,它可以自动执行某些操作来确保数据的完整性和一致性。本章节将详细介绍触发器的概念、功能、优点、类型,以及如何创建和使用...

    数据库触发器----VC

    数据库触发器是数据库管理系统中的一个重要组成部分,主要用于在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行一段预定义的SQL代码。在本压缩包中,"数据库触发器----VC"是一个示例,它展示了如何...

    数据库触发器的简单说明

    触发器简单说明 数据库触发器说明 触发器简单说明 数据库触发器说明

    数据库触发器.docx

    数据库触发器是SQL Server数据库管理系统中的一个重要特性,它允许开发者在特定的数据操作(如INSERT、UPDATE或DELETE)之前或之后自动执行一段预定义的代码。触发器的主要目标是增强数据库的完整性,确保数据的一致...

Global site tag (gtag.js) - Google Analytics