create or replace trigger auth_secure
before insert or update or delete
on auths //对整表更新前触发
begin
if(to_char(sysdate,'DY')='SUN'
RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表auths');
end if;
end
RAISE_APPLICATION_ERROR的错误代码在-20000到-20999之间,这样就不会与 ORACLE 的任何错误代码发生冲突
禁止ddl操作
create or replace trigger ddl_deny
before create or alter or drop or truncate on database//系统级别的触发器
declare
v_errmsg varchar2(100):= 'You have no permission to this operation';
begin
if ora_sysevent = 'CREATE' then
raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || v_errmsg);
elsif ora_sysevent = 'ALTER' then
raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || v_errmsg);
elsif ora_sysevent = 'DROP' then
raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || v_errmsg);
elsif ora_sysevent = 'TRUNCATE' then
raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || v_errmsg);
end if;
exception
when no_data_found then
null;
end;
又一例:
create or replace trigger his_trig_u
after update ON MYDATA
FOR EACH ROW
declare
temp_count number;
BEGIN
select count(*)
into temp_count
from DATAHIS t
where t.num = :new.num
and t.time = :new.time;
if temp_count = 0 then
insert into DATAHIS
(uid, num, value, time)
values
(data_sql.nextval,
:new.num,
:new.value,
:new.time);
end if;
END;
begin前面出现的new,old不加冒号,begin和end之间出现的new和old都要在前面加上":"
用触发器完成动态数据的操作
在涉及如何实现动态库存的问题时,可用触发器解决。仓库有验收、出库、调拨、报废、退料、让售等这些数据必须与以前的库存相加减,才能完成动态库存操作。本文仅以验收单触发器为例,其它的结构雷同。它们涉及到两个基表:bi_ysd(验收单),Bj_kcb(当前库存表),前者的表结构(rq(日期),ysdh(验收单号), bjbm(备件编码),yssl(验收数量),ysdj(验收单价)),后者的表结构为(bjbm(备件编码),dqkcl(当前库存量),dqkcje(当前库存金额))触发器如下:
create or replace trigger trig_ysd
after insert or update or delete on bj_ysd
for each row
declare rq1 varchar2(8);rq2 varchar2(8);
/*限于篇幅,yssl1,yssl2,ysdj1,ysdj2,bjbm1,bjbm2,ii声明略*/
if inserting or updating then
rq1:=:new.rq;bjbm1:=:new.bjbm;yssl1:=:new.yssl;
ysdj1:=:new.ysdj;
select count(*) into ii from bj_dqkcb
where bjbm=bjbm1;
if ii=0 then
insert into bj_dqkcb(bjbm,dqkcl,dqkcje)
value(bjbm1,yssl1,ysdj1);
else
update bj_dqkcb
set dqkcl=dqkcl+yssl1;
dqkcje=dqkcje+yssl1*ysdj1;
end if
end if
if deleting or updating then
rq2:=:old.rq;
bjbm2:=:old.bjbm;
yssl2:=:old.yssl;
ysdj2:=:old.ysdj;
update bj_dqkcb
set dqkcb=dqkcl-yssl2;
dqkcje=dqkcje-yssl2*ysdj2
end if;
end ;
分享到:
相关推荐
触发器9.18触发器9.18触发器9.18触发器触发器9.18触发器9.18触发器9.18触发器
初步学习Quartus软件时,了解各种触发器的机理、用软件进行仿真,看波形图。 Dff芯片 集成d 触发器,单独触发器 7474芯片D触发器 74112 J、K触发器 Tff T触发器 二分频触发器:时钟每触发2个周期时,电路输出1个周期...
sakila数据库触发器的理解 基于sakila的触发器的设计 PDF中包括: 1. 观察 sakila.mwb 并回答问题 1.1图中共有几个 View 1.2分析以下 3 个视图,回答以下问题: 2.观察 sakila-schema.sql 和 sakila-data.sql 并回答...
SQL SERVER为每个触发器都创建了两个临时表INSERTED表和DELETED表,这两个表的逻辑结构与被触发器作用的表一样,用户可以读取这两个表的内容,但不能对它们进行修改,触发器执行完后,这两个表也会自动删除。...
1、熟悉基本RS触发器和可控RS触发器功能; 2、熟悉集成的D触发器、JK触发器的功能; 3、初步应用D触发器和JK触发器实现简单功能电路。 二、实验内容及步骤 (一)构建一个由与非门构成的基本RS触发器,如图1所示。用...
触发器程序设计 2 通过本实验的学习,使学生掌握握触发器程序的设计和使用。 二、实验内容 说明:使用银行贷款数据库。 1、新建一个贷款记录统计表LoanNum,存放每一个法人单位的贷款次数。为LoanT表创建一...
从Oracle8i开始,Oracle引入了特殊的触发器,这些触发器并不是和特殊的DML事件相关联的(DML事件,如,INSERT,UPDATE和DELETE)。这些系统级别的触发器包括数据库启动触发器,DDL触发器和最终用户登陆/注销触发器。...
1、测试D触发器的逻辑功能。2、触发器之间的相互转换。3、用JK触发器组成双向时钟脉冲电路,并测试其波形。
D触发器构成的余3码计数器数电课设报告 23.pdfD触发器构成的余3码计数器数电课设报告 23.pdfD触发器构成的余3码计数器数电课设报告 23.pdfD触发器构成的余3码计数器数电课设报告 23.pdfD触发器构成的余3码计数器数电...
触发器举例 1)掌握——触发器的应用; 课程目标 PART ONE 触发器举例 【例】 创建一个触发器,当修改Sell表中订购册数时,如果修改后的订购册数小于5本,则触发器将该对应的折扣修改为1,否则,折扣修改为0.8。 ...
边沿触发器:只有在时钟脉冲CP上升沿或下降沿时刻接收输入信号,电路状态才发生翻转,而在CP的其它时间内,电路状态不会发生变化的触发器。 由于只在时钟上升沿或下降沿接收输入信号,因此提高了触发器的可靠性和抗...
触发器的一些例子,可以快速的使用触发器进行数据库编程
VHDL Quartus 同步D触发器源代码 --2015/11/25 --同步D触发器 LIBRARY IEEE; --调用库 USE IEEE.STD_LOGIC_1164.ALL; --库文件 USE IEEE.STD_LOGIC_UNSIGNED.ALL; --库文件 ---------------------------------------...
本文主要讲了一下关于RS触发器与SR触发器区别有哪些,希望对你的学习有所帮助。
基于Multisim14,绘制的JK触发器及D触发器构成计数型触发器仿真.
sqlserver触发器例子 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。 二﹕ SQL ...
verilog语言实现D触发器,可在vivado运行
本文主要讲了jk触发器波形图怎么画?主从jk触发器波形图,下面一起来学习一下
5. 理解触发器的用途、类型和工作原理。 6. 掌握利用T-SQL语句创建和维护触发器的方法。 7. 掌握利用SQL Server Management Studio创建、维护触发器的方法。 二、 实验内容(实验过程、代码和结果截图) 1. 创建...