触发器总结

本文深入探讨了数据库触发器的概念、工作原理及其在Oracle环境中的应用,通过具体实例展示了如何创建和使用触发器,包括触发器的语法、事件、参数限制以及与数据库完整性的紧密联系。

触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。所以运行触发器就叫触发或点火(firing)。ORACLE事件指的是对数据库的表进行的INSERT、UPDATE及DELETE操作或对视图进行类似的操作。ORACLE将触发器的功能扩展到了触发ORACLE,如数据库的启动与关闭等。所以触发器常用来完成由数据库的完整性约束难以完成的复杂业务规则的约束,或用来监视对数据库的各种操作,实现审计的功能。

CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE 
| AFTER }
{
INSERT | DELETE | UPDATE [OF column [, column …]]}
[OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...]
ON [schema.]table_name | [schema.]view_name 
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
[FOR EACH ROW ]
[WHEN condition]
PL
/SQL_BLOCK | CALL procedure_name;

 

CREATE OR REPLACE TRIGGER TG_TABLE_IUD
AFTER INSERT OR UPDATE OR DELETE
ON TB_DIR_DAICHO_TR
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
-- 定数定義
    CV_DUMMY      CONSTANT VARCHAR2(1) := '0';
    CN_DUMMY      CONSTANT NUMBER      := 0;
    CD_DUMMY      CONSTANT DATE        := SYSDATE;
-- 変数定義
    d_update_dt            DATE;         -- 更新日時
    v_update_id            VARCHAR2(10); -- 更新者ID
--
    rec_tddt      TABLE%ROWTYPE;
--
BEGIN
--
    -- key値保存
    IF DELETING THEN
        d_update_dt        := :OLD.UPDATE_DT;        -- 更新日時
        v_update_id        := :OLD.UPDATE_ID;        -- 更新者ID
    ELSE
        d_update_dt        := :NEW.UPDATE_DT;        -- 更新日時
        v_update_id        := :NEW.UPDATE_ID;        -- 更新者ID
    END IF;
--
    -- DELETE trigger
    IF DELETING THEN
   
    ELSIF INSERTING THEN
   
    ELSE
   
    END IF;
EXCEPTION
  WHEN OTHERS THEN
    Raise_application_error(-20001, sqlcode || ':' || sqlerrm);
    dbms_output.put_line('エラー' || sqlcode || ':' || sqlerrm);
--
END;
/

### 数字电路中触发器的特点总结 触发器是数字电路中的核心组件,其特点可以从功能、结构和应用场景等方面进行总结。以下是触发器的主要特点: #### 1. 基本功能 触发器能够存储一位二进制信息,具有记忆功能[^1]。这是触发器最基本的功能,也是其在数字电路中广泛应用的核心原因。 #### 2. 状态控制 触发器的状态由输入信号和时钟脉冲共同决定。例如,JK触发器可以通过不同的输入组合实现置位、复位、保持或翻转等功能[^2]。 #### 3. 触发方式多样性 触发器的触发方式有电平触发、边沿触发和主从触发等。其中,边沿触发器仅在时钟脉冲的有效边沿(上升沿或下降沿)响应输入信号,从而避免了因输入信号变化过快而导致的误动作问题。 #### 4. 结构复杂性 触发器的结构从简单的RS触发器到复杂的JK触发器逐步演进。每种类型的触发器都通过特定的逻辑设计满足不同的应用需求。例如,主从JK触发器由两个可控RS触发器组成,增强了抗干扰能力[^2]。 #### 5. 可靠性和高效性 随着集成电路技术的发展,触发器的设计变得更加高效和可靠,为数字电路的发展提供了强有力的支持[^1]。 ```python # 示例代码:简单模拟JK触发器的行为 class JKFlipFlop: def __init__(self): self.q = 0 self.q_not = 1 def trigger(self, j, k, clock): if clock == 1: # 上升沿触发 if j == 1 and k == 0: self.q, self.q_not = 1, 0 # 置位 elif j == 0 and k == 1: self.q, self.q_not = 0, 1 # 复位 elif j == 1 and k == 1: self.q, self.q_not = not self.q, not self.q_not # 翻转 ``` #### 6. 广泛的应用场景 触发器广泛应用于计数器、寄存器、分频器等数字电路中,是构建复杂数字系统的基础单元[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值