oracle11g游标及触发器相关知识

oracle11g游标及触发器相关知识
oracle11g游标及触发器相关知识

oracle11g 游标:

1. 当在PL/SQL中使用SQL语句时,Oracle会为其分配上下文区域,这是一段

私有的内存区域,用于暂时保存SQL语句影响到的数据。游标是指向这段内存区域的指针。

2. Oracle中主要有两种类型的游标:

(1) 隐式游标:所有的DML语句和PL/SQL SELECT 语句都有;

(2) 显式游标:由开发人员声明和控制。

3. 可以使用的游标属性包括四种:%ROWCOUNT、%FOUND、%NOTFOUND、

%ISOPEN,这四种属性对于显式游标和隐式游标都有用,但是含义和使用方法略有不同。游标在使用属性时,需要以游标名称作为前缀,以表明该属性是哪个游标的,隐式游标没有名称,所以在使用隐式游标时采取了统一的一个名称SQL。

4. 在PL/SQL中的SELECT语句只能且必须取出一行数据,取出多行或者零行都

被认为是异常,所以在对多行数据进行操作时,必须使用显式游标来实现。

5. 使用显式游标的步骤:

(1)声明游标:CURSOR cursor_name is select_statement;

(2)打开游标:OPEN cursor_name;

(3)取游标中的数据:FETCH cursor_name INTO variable1,variable2,...;

(4)关闭游标:CLOSE cursor_name;

6.用变量接收游标中的数据

sql> declare

v_name emp.ename%TYPE;

v_sal emp.sal%TYPE;

cursor emp_cursor is select ename,sal from emp

where deptno=10;

begin

open emp_cursor;

loop

fetch emp_cursor into v_name,v_sal;

exit when emp_cursor%NOTFOUND;

dbms_output.put_line(v_name || ‘的薪水是’ || v_sal);

end loop;

dbms_output.put_line(‘共取出了’ || emp_cursor%ROWCOUNT || ‘条记录’);

close emp_cursor;

end;

7.通常简单LOOP循环与%NOTFOUND属性配合使用,而WHILE循环与%FOUND属性配合使用。

8.使用记录接收游标中的数据

sql> declare

cursor emp_cursor is select ename, sal from emp

where deptno=10;

--注意创建记录类型的方式

emp_record emp_cursor%ROWTYPE;

begin

open emp_cursor;

loop

fetch emp_cursor into v_name,v_sal;

exit when emp_cursor%NOTFOUND;

dbms_output.put_line(v_name || ‘的薪水是’ || v_sal);

end loop;

dbms_output.put_line(‘共取出了’ || emp_cursor%ROWCOUNT || ‘条记录’);

close emp_cursor;

end;

9.带有参数的游标的语法:

CURSOR cursor_name

[(parameter_name datatype,...)]

IS

select_statement;

10.sql> declare

cursor emp_cursor(v_deptno NUMBER) is

select ename,sal from emp where deptno=v_deptno;

emp_record emp_cursor%ROWTYPE;

begin

open emp_cursor(20);

loop

fetch emp_cursor into emp_record;

exit when emp_cursor%NOTFOUND;

dbms_output.put_line(emp_https://www.360docs.net/doc/1610797195.html, || ‘的薪水是’ || emp_cursor.sal);

end loop;

dbms_output.put_line(‘共取出了’ || emp_cursor%ROWCOUNT || ‘条记录’);

close emp_cursor;

end;

11.游标变量:也叫做动态游标,通过REF CURSOR方式定义,它仍然是指向一段SQL语句的内存地址的指针。和动态游标相比,之前在声明时就定义好SELECT语句的游标称作静态游标,而动态游标在打开时才指定其所对应的SELECT语句。12.sql> declare

--定义游标变量类型

type dept_cursor_type is ref cursor

return dept%ROWTYPE

--定义游标变量

dept_cursor dept_cursor_type;

--定义记录类型

dept_record dept%ROWTYPE;

begin

open dept_cursor for select deptno,dname,loc

from dept;

fetch dept_cursor into dept_record;

while dept_cursor%FOUND loop

dbms_output.put_line(dept_record.deptno||’,’||dept_record.dname||’,’||dept_record.loc);

fetch dept_cursor into dept_record;

end loop;

dbms_output.put_line(‘GAME OVER’);

end;

以上定义的游标变量中指定了返回类型,也就是说,游标对应的结果集必须按照返回类型的规定来定义,这种游标称作强类型游标变量,除此之外还有一种弱类型游标变量。

13.游标的FOR循环:

for record_name in cursor_name loop

statement1;

statement2;

end loop;

14.declare

cursor emp_cursor(v_deptno NUMBER) is

select ename,sal from emp where deptno=v_deptno;

begin

for emp_record in emp_cursor(20) loop

dbms_output.put_line(emp_record.ename||’的薪水是’||emp_record.sal); end loop;

end;

15.cursor cursor_name is select_statement

for update [of column_reference][nowait]

在游标结果集上加锁,NOWAIT子句指定不等待锁,也就是如果要加锁的数据已经被锁定,则不等待直接返回。

将显示游标行中的当前行修改或者删除,更新或删除的语法如下:

update table_name set column=..

where current of cursor_name;

delete from table_name where current of cursor_name;

oracle11g 触发器:

1. PL/SQL程序中的触发器的结构类似于函数和过程,同样是具有声明部分、

执行部分和异常处理部分的命名PL/SQL块。但与过程和函数不同的是,触发器是在事件发生时隐式地运行的,并且触发器不能接收参数,而过程和函数都是被用户显式的调用的。

2. 运行触发器的方式叫触动,或者点火(触发),是指在指定的事件发生的时

候(前或者后)自动运行定义的PL/SQL块。

3. 在ORACLE数据库中主要有三种触发器类型:

(1) DML触发器,由表上执行的INSERT、UPDATE、DELETE操作触发;

(2) INSTEAD OF替代触发器,用于视图的操作;

(3)系统触发器,用于系统事件触发。

4. 触发器的触发范围又分为行级触发器和语句级触发器。

5. 在Oracle数据库中,触发器主要用于下列情况:

(1) 安全性方面,确定用户的操作是否可以继续进行;

(2) 产生对数据值修改的审计,将修改的信息记录下来,产生数据改动记录;

(3) 提供更灵活的完整性校验规则,能够根据更复杂的规则校验数据;

(4) 提供表数据的同步复制,使多个表的数据达到同步;

(5) 事件日志记录,记录数据库的重要操作信息。

6. 创建语句级触发器的语法格式:

CREATE [OR REPLACE] TRIGGER trigger_name

timing

event1 [OR event2 OR event3]

ON table_name

when conditions

trigger_body

7. SQL>CREATE OR REPLACE TRIGGER secure_emp

BEFORE INSERT ON emp

BEGIN

IF(TO_CHAR(SYSDATE,’DY’) IN (‘星期六’,’星期日’)) OR (TO_CHAR(SYSDATE,’HH24:MI’) NOT BETWEEN ‘8:00’ AND ’18:00’) THEN

RAISE_APPLICATION_ERROR(-20500,’你只有在工作时间对EMP表执行插入操作!’);

END IF;

END;

8. RAISE_APPLICATION_ERROR(error_number_in IN NUMBER,error_msg_in IN

VARCHAR2);(error_number_in的取值范围是-20000—20999之间,error_msg_in的长度不能超过2K,否则截取前面的2K),是一个系统存储过程,作用是将应用程序的错误从服务器端传递到客户端应用程序。

9. SQL> SQL>CREATE OR REPLACE TRIGGER secure_emp

BEFORE INSERT OR UPDATE OR DELETE ON emp

BEGIN

IF(TO_CHAR(SYSDATE,’DY’) IN (‘星期六’,’星期日’)) OR (TO_CHAR(SYSDATE,’HH24:MI’) NOT BETWEEN ‘8:00’ AND ’18:00’) THEN

IF DELETING THEN

RAISE_APPLICATION_ERROR(-20500,’你只有在工作时间对EMP表执行删除操作!’);

ELSEIF INSERTING THEN

RAISE_APPLICATION_ERROR(-20500,’你只有在工作时间对EMP表执行插入操作!’);

ELSEIF UPDATING(‘SAL’) THEN

RAISE_APPLICATION_ERROR(-20500,’你只有在工作时间对EMP表执

行更新操作!’);

END IF;

END IF;

END;

10. 创建行级触发器的语法格式:

CREATE [OR REPLACE] TRIGGER trigger_name

timing

event1 [OR event2 OR event3]

ON table_name

[REFERENCING OLD AS old|NEW AS new]

FOR EACH ROW

[WHEN (condition)]

Trigger_body

其中REFERENCING子句是声明触发器替换前后的引导前缀名的,默认替换前的前缀名为OLD,替换后的前缀名为NEW,也可以自己声明替换前后的变量前缀规则。

11. SQL> CREATE OR REPLACE TRIGGER restrict_salary

BEFORE INSERT OR UPDATE OF sal ON emp

FOR EACH ROW

BEGIN

IF NOT (:NEW.job IN(‘MANAGER’,’PRESIDENT’))

AND :NEW.sal>15000

THEN

RAISE_APPLICATION_ERROR

(-20202,’员工不能赚到这么多薪水’);

12.—注意在头定义中,NEW和OLD不需要加冒号前缀

SQL>create or replace trigger check_salary

before update of sal on emp

for each now

when(new.sal

begin

raise_application_error(-20508,’不允许降低薪水’);

end;

12. 对于简单视图来说,可以通过更新视图来更新基表,对于复杂视图来说,

无法通过视图更新基表,当需要通过视图影响它所对应的基表时,可能通过替代触发器来实现,当执行视图的更新时,将会触发替代触发器。

13. 创建视图上的INSTEAD OF触发器的语法格式:

SQL> CREATE [OR REPLACE] TRIGGER trigger_name

INSTEAD OF

event1 [OR event2 OR event3]

ON view_name

[REFERENCING OLD AS old|NEW AS new]

FOR EACH ROW

[WHEN (condition)]

Trigger_body

14. sql>create or replace view emp_view

as

select

deptno,sum(sal),sum_sal,count(*) count_num

from emp

group by deptno;

sql> delete from emp_view where deptno=10;

sql> select * from emp_view;

sql>create or replace trigger emp_view_delete

instead of delete on emp_view

for each row

begin

delete from emp where deptno=:old.deptno;

end;

sql> delete from emp_view where deptno=10;

sql> select * from emp_view;

sql> select * from emp where deptno=10;

15.系统级触发器监听的事件主要分成两种:用户触发事件和系统触发事件。用户触发事件主要包括:

(1)CREATE,ALTER或者DROP命令等DDL命令;

(2)登录或者退出数据库连接。

系统触发事件包括:

(1) 启动、关闭数据库;

(2) 特殊错误发生。

15. 创建DDL触发器的语法:

CREATE [OR REPLACE] TRIGGER trigger_name

timing

[dd1_event1 [OR dd1_event2 OR…]]

ON {DATABASE|SCHEMA}

Trigger_body

16. sql> conn sys/admin as sysdba

sql> create sequence event_seq;

sql> create table event_log(

eventide number primary key,

eventname varchar2(20),

obj_type varchar2(20),

obj_name varchar2(20),

obj_owner varchar2(20),

occurtime date default sysdate);

sql> create or replace trigger trig4dd1

after create or alter or drop on database

begin

insert into sys.event_log(

eventide,eventname,obj_type,old_name,

obj_owner)

values(event_seq.nextval,

sysevent,

dictionary_obj_type,

dictionary_obj_name,

dictionary_obj_owner);

end;

sql> conn scott/tiger

sql> drop table temp;

sql> create view view_emp10

as

select empno,ename,job,sal

from emp where deptno=10;

sql> conn sys/admin as sysdba

sql> select * from event_log;

17. create or replace trigger trigger_name

timing

database_event1 [or database_event2 or …]]

on {database|schema}

trigger_body

18. sql> conn sys/admin as sysdba

sql> create table event(

eventuser varchar2(20),

action varchar2(20),

logtime date default sysdate);

sql> --记录用户的登入

create or replace trigger trig4_logon

after logon on database

begin

insert into sys.event(eventuser,action)

values(user,’log on’);

end;

sql> --记录用户的登出

create or replace trigger trig4_logoff

after logoff on database

begin

insert into sys.event(eventuser,action)

values(user,’log off’);

end;

sql> conn scott/tiger

sql> conn hr/hr

sql> conn sys/admin as sysdba

sql> select * from event;

19. 在触发器中调用过程或者函数:CALL procedure_name;注意这种方式创建触发器,不需要再写BEGIN和END,程序末尾也不需要写分号“;”来表示结束。

20. sql> select object_name from user_objects where

object_type=’TRIGGER’;

sql> select trigger_name,status,table_name from

user_triggers;

sql>--定义LONG类型的显示长度

set long 1000

sql> select trigger_body from user_triggers

where trigger_name=’RESTRICT_SALARY’;

21. 触发器的执行顺序:

(1) 执行所有的BEFORE STATEMENT触发器;

(2) 根据操作的行循环执行:

A.所有的BEFORE ROW 触发器;

B.所有的AFTER ROW 触发器;

(3) 执行DML语句,进行完整性约束条件检测;

(4) 执行所有的ALTER STATEMENT触发器。

22. 启用或者禁用某个触发器的语法:

alter trigger trigger_name disable|enable;

启用或者禁用某个对象上的所有触发器:

alter table table_name disable|enable

all triggers;

23. 就像其他存储程序一样,触发器有时候也会失效,比如触发器中引用的表

被意外删掉,对于失效的触发器,当失效条件被修正,比如表被重新建立起来,应该重新使它生效,否则触发触发器时可能出错,重新使触发器生效的方法就是重新编译触发器,语法如下:

alter trigger trigger_name compile;

24.删除触发器:drop trigger trigger_name;

SQL Server2008触发器学习笔记

触发器 一﹕触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。 二﹕SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表由系统来维护﹐它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行完成后﹐与该触发器相关的这两个表也被删除。Deleted表存放由于执行Delete或Update语句而要从表中删除的所有行。Inserted表存放由于执行Insert或Update语句而要向表中插入的所有行。 三﹕Instead of 和After触发器 SQL Server提供了两种触发器﹕Instead of 和After 触发器。 这两种触发器的差别在于他们被激活的操作﹕ Instead of触发器用于替代引起触发器执行的T-SQL语句。除表之外﹐Instead of 触发器也可以用于视图﹐用来扩展视图可以支持的更新操作。 After触发器在一个Insert,Update或Deleted语句之后执行﹐进行约束检查等动作都在After 触发器被激活之前发生。After触发器只能用于表。一个表或视图的每一个修改动作(insert,update和delete)都可以有一个instead of 触发器﹐一个表的每个修改动作都可以有多个After触发器。 INSTEAD OF触发器被用于更新那些没有办法通过正常方式更新的视图。通常不能在一个基于连接的视图上进行DELETE操作,可以编写一个INSTEAD OF DELETE触发器来实现删除。可以访问那些如果视图是一个真正的表时已经被删除的数据行,它将把删除的行存储在deleted临时表中。 本次练习将通过具体的例子介绍如何使用INSTEAD OF触发器,使读者掌握INSTEAD OF 触发器的使用方法。 向student表中插入数据时,检查学号是否存在于student表中,如存在则进行插入操作,否则就不插入,具体语句如下所示: CREATE TRIGGER [checkid] ON dbo.student INSTEAD OF insert AS IF NOT EXISTS(SELECT * FROM dbo.student WHERE ID=(SELECT ID FROM INSERTED)) BEGIN ROLLBACK TRANSACTION PRINT '要处理记录的学号不存在!' END ELSE BEGIN INSERT NTO dbo.student select * from inserted

第21章习题 触发器和时序逻辑电路

第21章时序逻辑电路 S13101B 在逻辑电路中,任意时刻的输出状态仅取决于该时刻输入信号的状态,而与信号作用前电路的状态无关,这种电路称为。因此,在电路结构上一般由 组合而成。 解: 组合逻辑电路,门电路 S13102B 在任何时刻,输出状态仅仅决定于同一时刻各输入状态的组合,而与电路以前所处的状态无关的逻辑电路称为,而若逻辑电路的输出状态不仅与输出变量的状态有关,而且还与系统原先的状态有关,则称其为。 解: 组合逻辑电路,时序逻辑电路。 S13102I 在同步计数器中,各触发器的CP输入端应接时钟脉冲。 解: 同一 S13201B 有四个触发器的二进制计数器,它的计数状态有( )。 A. 8 B. 16 C. 256 D. 64 解: B S13104B 个逻辑电路,如果某一给定时刻t的输出不仅决定于该时刻t的输入,而且还决定于该时刻前电路所处的状态,则这样的电路称为电路。 解: 时序 S13105B 一个逻辑电路,如果某一给定时刻t的稳态输出仅决定于该时刻的输入,而与t前的状态无关,则这样的电路称为电路。 解: 组合 S13106B 按触发器状态更新方式划分,时序电路可分为和两大类。 解: 同步、异步 S13108B 计数器中有效状态的数目,称为计数器的。 解: 模或长度

S13106N 如图所示电路是 步 进制计数据。 解: 异,十六 S13107N 如图所示电路是 步,长度为 的 法计数器。 解: 异,8,加 S13108N 在如图所示电路中,若将第二级、第三级触发器的CP 改接在21Q Q 、上,则该电路是 步,长度为 的 法计数器。 解: 异,8,减 S13110N 如图所示电路是 步,长度为 的 法计数器。 解: 异,4,加 S13111N 如图所示电路是 步,长度为 的 法计数器。 解: 异,8,减

第4章 触发器(总复习)

【总复习卷】 第4章集成触发器 触发器是数字电路中的一个基本逻辑单元,它与逻辑门电路一起组成各种各样的数字电路。触发器具有记忆功能并且其状态在触发脉冲作用下迅速翻转。 【知识结构图】 【本章重点】 1. 触发器的基本性质。 2. RS触发器、JK触发器、D型触发器的逻辑功能,各类触发器逻辑符号。 3. 集成触发器外特性及其应用。 【本章难点】 1. 各类触发器逻辑功能分析。 2. 主从型触发器工作波形画法。 3. 集成触发器简单应用。 4. 触发器的空翻。 【本章考点】 1. 各类触发器逻辑符号及相应逻辑功能。 2. 触发器的工作波形。 3. 集成触发器类型识别及简单应用。 4. 触发器的空翻。

综合训练(第4章) 一、填空题 1.触发器具有________种稳定状态。在输入信号消失后,能保持输出状态不变,也就是说它具有________功能。在适当触发信号作用下,从一个稳态变为另一个稳态,,因此 触发器可作为_______进制信息存贮单元。 2. 边沿型触发器可以避免现象的产生。 3. 通常规定触发器______端的状态作为触发器的状态。 4. 触发器按照逻辑功能分为:、、、等。 5. 主从触发器在时钟高电平时主触发器接收信,而__ __触发器状态不变。在时钟 脉冲下降沿时__主__触发器被封锁而__ ___触发器打开接收触发器信号。 6. 与非门构成的基本RS触发器的约束条件是R+S不能为。 7. 基本触发器电路中,S D端、R D端可以根据需要预先将触发器或, 而不受的同步控制。 8. 在时钟脉冲控制下,JK触发器J端和K端输入不同组合的信号时,能够具 有、、、的功能。 二、判断题(对的打”√”,错的打”Х”) 1. 触发器属于组合逻辑电路系列,即没有记忆功能。( ) 2. 同步RS触发器连成计数电路时,会产生空翻现象。 ( ) 3. 主从RS触发器会出现状态不定的现象。 ( ) 4. 主从型触发器接成计数电路时,不会产生空翻现象。( ) 5. 当JK触发器的,它就转化为T触发器。( ) 6. JK触发器的特性方程是。( ) 7. 当J=K=0时,JK触发器就具有计数的功能。( ) 8. 由触发器工作性质可看出触发器是一个双稳态电路。 ( ) 9. 触发器的抗干扰能力,与触发脉冲宽度无关。 ( ) 10. 同步RS触发器状态的改变是与时钟脉冲信号同步的。( ) 11. 与非门构成的基本RS触发器,当S=1,R=0时,其输出端状态是1。( ) 12. 同步RS触发器的约束条件是SR=0。( )

实验五:游标、存储过程、触发器

信息学部 实验报告 课程名称:网络数据库 实验名称:游标、存储过程、触发器实验类型:□验证性□综合性□设计性实验日期: 学生姓名: 学号: 班级: 专业:信息管理与信息系统学部:信息学部 指导教师:康瑶 成绩: 评语: 2015 年—2016 年第二学期

实验五:游标、存储过程、触发器 实验内容: 在scott方案下完成如下实验内容: 1、用显式游标编写程序,程序的功能是:计算每一个部门的平均工资,输出部门名称dname及平均工资avg_sal。(利用scott方案下的emp表及dept表) 2、编写一个存储过程,此过程的功能是将scott方案下的emp表中工资大于1000的ename,job,sal的30%,comm插入表bonus中,要求用显示游标完成数据插入操作,然后编写PL/SQL程序执行此存储过程,并显示最终结果。 3、在scott方案下定义一个存储过程使用游标方式,根据emp表员工编号参数, 查询并打印该员工的下属的姓名,职位,工资等信息。 4、创建存储过程GetGrade(v_empno),查询指定员工的工资等级。工资小于等于3000,等级为“低”;工资大于3000,小于5000,等级为”中”;工资大于等于5000,等级为高。并执行该存储过程。 5、创建存储过程UpdateWage,查询指定员工的工资,如果工资小于3000, 则加200工资,并提示信息“XX号员工工资已更新。”,如果工资大于3000,则提示信息“XX号员工工资为XXX,已达到规定标准。” 6、定义一个函数,根据部门编号参数,查询出该部门的员工总数,并作为参数输出。 7、定义触发器MyTrigger,当表UserType中TypeId列的值发生变化时,自动更新表Users中的UserType列的值,从而保证数据的完整性: 8、创建触发器MyTrigger,它的作用是当表departments中的记录被删除后,自动删除表employees中的对应的员工记录,从而保证数据的完整性。 实验步骤(图文并茂):

SQL触发器基本教程

一、创建一个简单的触发器 触发器是一种特殊的存储过程,类似于事件函数,SQL Server? 允许为INSERT、UPDATE、DELETE 创建触发器,即当在表中插入、更新、删除记录时,触发一个或一系列T-SQL语句。触发器可以在查询分析器里创建,也可以在表名上点右键->“所有任务”->“管理触发器”来创建,不过都是要写T-SQL 语句的,只是在查询分析器里要先确定当前操作的数据库。 创建触发器用CREATE TRIGGER CREATE TRIGGER 触发器名称 ON 表名 FOR I NSERT、UPDATE 或DELETE AS T-SQL 语句 注意:触发器名称是不加引号的。 如下是联机丛书上的一个示例,当在titles 表上更改记录时,发送邮件通知MaryM。CREATE TRIGGER reminder ON titles FOR INSERT, UPDATE, DELETE AS EXEC master..xp_sendmail 'MaryM', 'Don''t forget to print a report for the distributors.' 二、删除触发器 用查询分析器删除 在查询分析器中使用drop trigger 触发器名称来删除触发器。 也可以同时删除多个触发器:drop trigger 触发器名称,触发器名称... 注意:触发器名称是不加引号的。在删除触发器之前可以先看一下触发器是否存在: if Exists(select name from sysobjects where name=触发器名称and xtype='TR') 用企业管理器删除 在企业管理器中,在表上点右键->“所有任务”->“管理触发器”,选中所要删除的触发器,然后点击“删除”。 三、重命名触发器 用查询分析器重命名 exec sp_rename 原名称, 新名称 sp_rename 是SQL Server? 自带的一个存储过程,用于更改当前数据库中用户创建的对象的名称,如表名、列表、索引名等。

第十四章习题参考答案部分

习题十四 14-1 试说明时序逻辑电路有什么特点?它和组合逻辑电路的主要区别在什么地方? 答:时序逻辑电路的特点是电路在某一时刻稳定输出不仅取决于该时刻的输入,而且还依赖于该电路过去的状态,换句话说,该电路具有记忆功能。它与组合逻辑电路的主要区别在于时序电路的记忆功能。时序电路通常是由组合逻辑电路和记忆电路两部分组成。 14-2 有一个专用通讯系统(同步时序电路),若在输入线x 上连续出现三个“1”信号,则在输出线Y 上出现一个“1”信号予以标记,对于其它输入序列,输出均为“0”,作状态图和状态转移真值表。 解:该电路要求设计同步时序逻辑电路,所以状态的改变是在同步时钟脉冲的作用下进行状态转换。 功能要求:在输入端连续输入三个“1”信号时,输出端输出“1”,否则输出端输出“0”。对功能进行描述为:假设初始状态为00,当接到输入信号为“1”时,用状态01表示已经输入一个“1”的状态01,否则,回到初始状态00;若在01状态又接到一个“1”信号,将该状态记为11,状态11说明已经连续收到两个“1”;在11状态,无论下一个输入是“1”还是“0”,都回到00状态,只是在接收到“1”时(说明连续收到三个“1”,然后将状态置于初始状态,准备对下一次检测作好准备)输出“1”,否则输出“0”。因此,至少需要三个状态来描述功能要求(由此可知,需要两个触发器来描述三个不同状态)。 根据以上要求,可以作出电路的状态图如下: 14-3 分析题图14-1所示时序电路的逻辑功能,并给出时序图。 解:该题是将J K 触发器转换为D 触发器,根据D 触发器的状态方程得: D Q D Q D Q K Q J Q n n n n n =+=+=+1 其次注意到JK 触发器是下降沿触发,所以时序图如图所示。 状态转移真值表 次态/输出( Q 2n +1Q 1n +1/Y ) 现态Q 2n Q 1n x =0 x =1 0 0 0 1 1 1 00/0 00/0 00/0 01/0 10/0 00/1 1 0 偏离状态 CP D D 题图14-1习题14-3电路图 CP D Q n 习题14-3的时序图

第21章 触发器和时序逻辑电路2

常用时序组合逻辑电路及其应用 寄存器 计数器 通过学习理解寄存器及计数器的概念和工作原理,掌握时序电路的分析方法。

21.2 寄存器 ◆按功能分 数码寄存器 移位寄存器 串行 并行 ◆ 按存取数码的方式 在数字电路中, 用来存放二进制数据或代码的 电路称为寄存器。 用来暂时存放数据或指令 , 然后根 据需要取出数码。 寄存器分类:

一个触发器组成 1位的数码寄存器 CP上升沿,Q =D CP高电平、低电平、下降沿,Q 均不变R S D CP Q Q 21.2.1 数码寄存器 寄存器是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,存放n 位二进制代码的寄存器,需用n个触发器来构成。 通常由D触发器或R-S触发器组成 D CP

Q 4 Q 3 Q 2 Q 1 & & & & Q Q D Q Q D Q Q D Q Q D A 1 A 2 A 3 A 4 CLR 取数脉冲接收脉冲( CP ) 四位数码寄存器:1 1 1 1 1 1 1110特点:数码从四个输入端同时输入,从四个输出端同时输出。又称并行输入并行输出寄存器。 待存数码为1101 0000寄存指令 取出指令 1、预先清零 2、存入数码 3、取出数码

数码寄存器 由8D 集成电路74LS273组成8位二进制数寄存器D 3D 2D 1D 03210R +5V 74LS273 1D 8D 1Q 8Q 8D 寄存器 4567D 4D 5D 6D 7 CP 8位二进制数D 7~D 0

移位寄存器除具寄存器的功能外,还可将数码移位。所谓“移位”,就是将寄存器所存各位数据,在每个移位脉冲的作用下,向左或向右移动一位。根据移位方向,常把它分成三种: 寄存器 左移寄存器 右移寄存器 双向移位左移寄存器:在时钟脉冲的作用下,低位寄存器的数码送给高位寄存器,作为高位寄存器的次态输出; 右移寄存器:在时钟脉冲的作用下,高位寄存器的数码送给低位寄存器,作为低位寄存器的次态输出; 21.2.2 移位寄存器

oracle11g游标及触发器相关知识

oracle11g 游标: 1. 当在PL/SQL中使用SQL语句时,Oracle会为其分配上下文区域,这是一段 私有的内存区域,用于暂时保存SQL语句影响到的数据。游标是指向这段内存区域的指针。 2. Oracle中主要有两种类型的游标: (1) 隐式游标:所有的DML语句和PL/SQL SELECT 语句都有; (2) 显式游标:由开发人员声明和控制。 3. 可以使用的游标属性包括四种:%ROWCOUNT、%FOUND、%NOTFOUND、 %ISOPEN,这四种属性对于显式游标和隐式游标都有用,但是含义和使用方法略有不同。游标在使用属性时,需要以游标名称作为前缀,以表明该属性是哪个游标的,隐式游标没有名称,所以在使用隐式游标时采取了统一的一个名称SQL。 4. 在PL/SQL中的SELECT语句只能且必须取出一行数据,取出多行或者零行都 被认为是异常,所以在对多行数据进行操作时,必须使用显式游标来实现。 5. 使用显式游标的步骤: (1)声明游标:CURSOR cursor_name is select_statement; (2)打开游标:OPEN cursor_name; (3)取游标中的数据:FETCH cursor_name INTO variable1,variable2,...; (4)关闭游标:CLOSE cursor_name; 6.用变量接收游标中的数据 sql> declare v_name emp.ename%TYPE; v_sal emp.sal%TYPE; cursor emp_cursor is select ename,sal from emp where deptno=10; begin open emp_cursor; loop fetch emp_cursor into v_name,v_sal; exit when emp_cursor%NOTFOUND; dbms_output.put_line(v_name || ‘的薪水是’ || v_sal);

SQL触发器全过程(含实例讲解)

SQL触发器全过程 第一、概述 一:触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。 二: SQL Server为每个触发器都创建了两个专用表:Inserted表和Deleted 表。这两个表由系统来维护,它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行完成后,与该触发器相关的这两个表也被删除。 Deleted表存放由于执行Delete或Update语句而要从表中删除的所有行。 Inserted表存放由于执行Insert或Update语句而要向表中插入的所有行。 三:instead of 和 After触发器 SQL Server2000提供了两种触发器:Instead of 和After 触发器。这两种触发器的差别在于他们被激活的同: Instead of触发器用于替代引起触发器执行的T-SQL语句。除表之外,Instead of 触发器也可以用于视图,用来扩展视图可以支持的更新操作。 After触发器在一个Insert,Update或Deleted语句之后执行,进行约束检查等动作都在After触发器被激活之前发生。After触发器只能用于表。

一个表或视图的每一个修改动作(insert,update和delete)都可以有一个instead of 触发器,一个表的每个修改动作都可以有多个After触发器。 四:触发器的执行过程 如果一个Insert﹑update或者delete语句违反了约束,那幺After触发器不会执行,因为对约束的检查是在After触发器被激动之前发生的。所以After 触发器不能超越约束。 Instead of 触发器可以取代激发它的操作来执行。它在Inserted表和Deleted表刚刚建立,其它任何操作还没有发生时被执行。因为Instead of 触发器在约束之前执行,所以它可以对约束进行一些预处理。 五:使用T-SQL语句来创建触发器 基本语句如下: create trigger trigger_name on {table_name | view_name} {for | After | Instead of } [ insert, update,delete ] as sql_statement

第14章 脉冲的产生和整形电路

第14章脉冲的产生和整形电路教学重点: 1.掌握锯齿波电压发生器的工作原理和锯齿波电压参数。 2.掌握单稳态电路的工作原理及应用。 3.掌握多谐振荡电路的工作原理及应用。 4.掌握施密特电路的工作原理及应用。 教学难点: 1.环形多谐振荡器的工作原理。 2.单稳态触发器的工作原理。 3.施密特触发器的滞回特性。 学时分配: 序号内容学时 1 14.1 锯齿波电压发生器和多谐振荡器 3 2 14.2 单稳态触发器 3 3 14.3 施密特触发器 2 4 本章小结与习题 2 5 本章总学时10 14.1 锯齿波电压发生器和多谐振荡器 14.1.1锯齿波电压发生器 锯齿波电压在示波器、雷达、自动控制和测量仪器等设备中广泛应用。 一、锯齿波电压的参数 锯齿波电压的波形参见图14.1.1。 1.扫描期T1:要求在T1时间内电压随时间线性变化。 2.回扫期T B:电压在此期间迅速回到起始值,要求 越小越好。 图14.1.1 锯齿波主要参数3.休止期T N:是扫描结束到下次扫描开始的间隔时 间。 4.恢复期T2:T2 =T B+T N 129

130 5.重复周期T :T =T 1+T 2 6.频率f :f = 1/T 7.扫描幅度V m :扫描期内电压的幅值。 图14.1.2 产生锯齿波电压原理图 图14.1.3用晶体管作开关的锯齿波电压发生器 二、锯齿波电压发生器基本原理 1.工作原理:利用电容器的缓慢充电和快速放电的过程,在电容器两端得到锯齿波电压。 2.工作过程:初始时开关S 闭合,v C = 0。若将S 断开,C 开始充电,τ = RC ,V C 按指数规律上升,经短暂时间T 1(T 1 << τ)后再将S 闭合,C 快速放电。不断重复上述过程,就可以得到锯齿波。 3.简单的锯齿波电压发生器:如图14.1.3所示。用晶体管V 代替开关S ,在V 的基极输入连续的矩形波,让V 交替地工作在截止与饱和状态,就可以获得锯齿波电压。 三、自举补偿锯齿波电路 1.电路如图14.1.4所示。 +V G 为电源;V 2是射极跟随器;V 1起开关作用;C 1为自举电容器;V 3是隔离二极管。 2.要求:自举电容C 1电容量足够大。 3.工作原理:V 1截止时,电容C 充电,V 2输出锯齿波正程电压;V 1饱和导通时,C 迅速放电,V 2输出锯齿波逆程电压。同时+V G 通过V 3、C 1、R e 对C 1再充电,补足被放掉的电荷。 14.1.2 多谐振荡器 在数字电路系统中,经常要处理脉冲的产生、延时、整形等问题,多谐振荡器、单稳态触发器和施密特触发器可以实现这些功能。 多谐振荡器:能自动反复输出矩形脉冲的自激振荡电路,是无稳态电路。 无稳态电路:不需要外加触发信号,电路的输出状态会在高、低电平两种状态间反复不停的翻转,没有稳定的状态。 一、用非门组成的多谐振荡器 1.结构特点:输出端与输入端接有反馈线,电路成环形。 2.工作原理 动画 环形多谐振荡器 图14.1.4 自举补偿锯齿波电路

SQL触发器实例讲解

SQL触发器实例讲解 SQL 资料2009-07-23 14:44:07 阅读6072 评论9 字号:大中小订阅 定义:何为触发器?在SQL Serv er里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 常见的触发器有三种:分别应用于Insert , Update , Delete 事件。 我为什么要使用触发器?比如,这么两个表: Create Table Student( --学生表 StudentID int primary key, --学号 .... ) Create Table BorrowRecord( --学生借书记录表 BorrowRecord int identity(1,1), --流水号 StudentID int , --学号 BorrowDate datetime, --借出时间 ReturnDAte Datetime, --归还时间 ... ) 用到的功能有: 1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号); 2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。 等等。 这时候可以用到触发器。对于1,创建一个Update触发器: Create Trigger truStudent On Student --在Student表中创建触发器 f or Update --为什么事件触发 As --事件触发后所要做的事情 if Update(StudentID) begin Update BorrowRecord Set StudentID=i.StudentID From BorrowRecord br , Deleted d ,Inserted i --Deleted和Inserted临时表 Where br.StudentID=d.StudentID end

第14章触发器和时序逻辑电路-习题

第14章 触发器和时序逻辑电路 A 选择题 14.1.1 触发器如图14.01所示,设初始状态为0,则输出Q的波形为图14.02中的( )。 图14.01 习题14.1.1的图 图14.02 习题14.1.1的图 14.1.2 触发器如图14.03所示,设初始状态为0,则输出Q的波形为图14.04中的( )。 图14.03 习题14.1.2的图 图14.04 习题14.1.2的图 14.1.3 图14.05所示的触发器具有( )功能。 (1)保持 (2)计数 (3)置1 图14.05 习题14.1.3的图 14.1.4 在图14.06所示的电路中,触发器的原状态Q1Q0=01,则在下一个CP作用下,Q1Q0 为( )。 (1)00 (2)01 (3)10

图14.06 习题14.1.4的图 图14.07 习题14.1.5的图 14.1.5在图14.07所示的电路中,触发器的原状态Q1Q0=00,则在下一个CP作用下,Q1Q0为 ( )。 (1)00 (2)01 (3)10 14.3.1 图14.08所示的是( )计数器。 (1)七进制 (2)八进制 (3)九进制 图14.08 习题14.3.1的图 14.4.1 由555定时器组成的单稳态触发器如图14.4.2(a)所示,若加大电容C的电容值, 则( )。 (1)增大输出脉冲u0的幅度 (2)增大输出脉冲u0的宽度 (3)对输出脉冲u0无影响 14.4.2 由555定时器组成的多谐振荡器如图14.4.3(a)所示,欲使振荡频率增高,则可( )。 (1)减小C (2)增大R1,R2 (3)增大U CC B基本题 14.1.6 当基本RS触发器D R和D S端加上图14.09所示的波形时,试画出Q端的输出波形。 设初始状态为0和1两种情况。 14.1.7 当可控RS触发器CP,S和R端加上图14.10所示的波形时,使画出Q端的输出波形。 设初始状态为0和1两种情况。

数据库存储器与触发器实验报告

南昌航空大学实验报告 二0 一七年5月 3 日 课程名称:数据库概论实验名称:存储器与触发器 班级: XX 姓名:XXX 同组人: X 指导教师评定:签名: 一、实验环境 1. Windows2000或以上版本; 2. SQLServer2000 或2005。 二、实验目的 1. 掌握存储过程的创建,修改,使用,删除; 2. 掌握触发器的创建,修改,使用,删除。 三、实验步骤及参考源代码 1.创建过程代码: CREATEPROCEDURE_P_Proc( @ccna varchar (10), @cnochar(4) OUTPUT@cnavarchar (10) OUTPUT@Pna varchar (20) OUTPUTSnumint OUTPUT AS SELECT@cna=cna, @cn(=cp. eno, @pnapna, @numnum FROMtp , customer, paper WHEREustomer . eno=cp. eno ANRaper . pno=cp. pno ANDcna =@ccna

6.执行存储过程C_P_Pro,实现对李涛,钱金浩等不同顾客的订阅信息 查询 execute C_P_Proc @nam=e' 李涛' execute C_P_Proc @nam=e' 钱金浩' 7,删除存储过程C_P_Prcc DROPPROCEDURCE_P_PROC (4)在DingBao数据库中针对PAPEF创建插入触发器TR_PAPER_I删除触发器TR_PAPER_D修改触发器TR_PAPER。具体要求如下。 <1>对PAPER勺插入触发器:插入报纸记录,单价为负值或为空时,设定为10 元。 CREATE TRIGGER TR_PAPER_I ON paper FOR INSERT AS DECLARE @ippr FLOAT; declare @ipno int; SELECT @ippr=ppr,@ipno=pno from inserted begin if @ippr<0 or @ippr is NULL begin raiserror(' 报纸的单价为空或小于零!',16,1)

SQL游标及触发器实例

SQL Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 Declare @barCode varchar(50)--声明变量用于存放游标结果 DECLARE CsrName CURSOR FOR--声明游标 select barCode from eachBook --游标数据来源 BEGIN OPEN CsrName --打开游标 FETCH FROM CURSUBOK INTO @barCode--获得来源的一行记录放入变量 WHILE @@FETCH_STATUS = 0 BEGIN -----------------------------------------------------针对每个结果做的操作 print @barcode ----------------------------------------------------------------------------End FETCH NEXT FROM CsrName INTO @barCode --处理下一行数据 CLOSE CsrName --游标用完了要关掉 END 总结:一般sql语句是面向集合的,游标是面向集合里面的行的,相当于获取一行数据->处理->获得下一行数据->处理这样一个循环。能不用游标就尽量不要用游标,性能很烂 --两种触发器,after为表sql语句执行之后操作,INSTEAD OF为之前操作 create trigger tgr_name--创建触发器 on classes --在classes表上 for insert--当classes表插入数据是触发as里面的操作(for 有after默认值,所以是sql 语句执行完了执行) --,有insert、update、delete三种操作类型。 as declare @id int;--定义变量用来临时存放数据 select @id = id from inserted; --在inserted表中查询已经插入记录信息,update就有个updated表,deleted就是deleted表 print '刚刚插入的记录的ID是'+@id; GO

第14章 双稳态触发器和时序逻辑电路

学习要点 ?触发器的工作原理及逻辑功能 ?寄存器、计数器的工作原理及构成 ?555定时器的工作原理及其应用 组合电路和时序电路是数字电路的两大类。门电路式组合电路的基本单元;触发器是时序电路的基本单元。时序逻辑电路的特点是电路的状态不仅取决于当时的输入信号,还于电路原来的状态有关。 触发器有两个稳定状态0和1态,可以记忆1位二值信号。双稳态触发其按其逻辑功能可分为RS触发器,JK触发器,D触发器和T触发器等;按其结构可分为基本RS触发器,同步触发器,主从触发器和边沿触发器等。 基本RS触发器 基本RS触发器可由两个“与非”门交叉连接而成,如下图所示。 Q与是基本触发器的输出端,两者的逻辑状态在正常条件下能保持相反。这种触发器有两种稳定状态:一个状态是Q=1,=0,称为置位状态(“1”态);另一个状态是Q=0,=1,称为复位状态(“0”态)。相应的输入端分别称为直接置位端或直接置“1”端()和直接 复位端“0”端()。 基本RS触发器输出与输入的逻辑关系。 1)=1,=0

所谓=1,就是将端保持高电位;而=0,就是在端加一个负脉冲。设触发器的初始状态为“1”态,即Q=1,=0。这时“与非”门G2有一个输入端为“0”,其输出端 变为“1”;而“与非”门G1的两个输入端全为“1”,其输出端Q变为“0”。因此,在端加负脉冲后,触发器就由“1”态翻转为“0”态。如果它的初始态为“0”态,触发器仍保持“0”态不变。 2)=0,=1 设触发器的初始状态为“0”态,即Q=0,=1。这是“与非”门G1有一个输入端为“0”,其输出端Q变为“1”;而“与非”门G2的两个输入端全为“1”,其输出端变为“0”。因 此,在端加负脉冲后,触发器就由“0”态翻转为“1”态。如果它的初始状态为“1”态,触发器人保持“1”太不变。 3)=1,=1 假如在(1)中由“0”变为“1”(即除去负脉冲),或在(2)中由“0”变为“1”,这样,==1,则触发器保持原状态不变。这就是它具有存储或记忆功能。 4)=0,=0 当端和端同时加负脉冲时,两个“与非”门输出端都为“1”,这就达不到Q与 的状态应该相反的逻辑要求。但当负脉冲除去后,触发器将由各种偶然因素决定其最终状态。因此这种情况在使用中应该禁止出现。 可知,基本RS触发其由两个稳定状态,它可以直接置位或复位,并具有存储或记忆的功能。在 直接置位端加负脉冲(=0)即可置位,在直接复位端加负脉冲(=0)即可复位。负脉冲除去以后,直接置位端和复位端都处于“1”态高电平(平时固定接高电平),此时触发器保持原状态不变,实现存储或记忆功能。但是复脉冲不可同时加在直接置位端和直接复位端。基本RS触发器的状态表见上图(c)。 上图(b)是基本RS触发器的图形符号,途中输入端引线上靠近方框的小圆圈是表示触发器用负脉冲“0电平”来置位或复位,即低电平有效, 故用和表示。 同步RS触发器 基本触发器是各种双稳态触发器的共同部分。 同步触发器还有导引带你路(或称控制电路)部分,

数据库触发器机制的设计与实现

数据库触发器机制的设计与实现 摘要:根据当前数据库应用需求和技术发展现状,研究了数据库管理系统管理系统触发器机制实现的关键技术问题,并以GKD-BaseGKD-Base为原型,在已有的GKD-Base PL/SQL 引擎基础上实现了数据库的触发器功能。关键词: PL/SQL引擎 Rete网络双Hash结构触发器 数据库管理系统作为信息系统的核心部件,在信息化时代所充当的角色是其它任何软件所不能替代的。当前数据库应用的一个普遍要求是数据库管理系统能够在一些数据库相关事件发生时触发预先定义的操作,实现信息管理的自动化,因此引进了触发器机制。触发器可以增强引用完整性,加强复杂业务的规则,或者监控数据库的变动,并执行一定的数据操作。触发器机制实现主要涉及触发事件的检测以及触发条件的判决等关键技术问题,以及对触发器的编译存储和调用执行等具体操作。本文以国产数据库管理系统GKD-Base为原型,在兼容Oracle 规范的PL/SQL引擎基础上,提出一套解决方案,对触发器的关键技术问题进行了探讨,并设计实现了数据库的触发器机制,扩展了数据库管理系统GKD-Base的功能。1 GKD-Base PL/SQL 引擎GKD-BASE数据库是一个具有自主知识产权的数据库管理系统,具有兼容SQL89标准的SQL引擎,能够为用户提供一个统一、有效的数据库访问接口(XAPI),实现对数据库的各种操作。为了融合SQL语言强大的集合数据处理能力处理能力和第三代语言(3GL)灵活的过程处理能力,在GKD-Base上已初步实现了兼容Oarcle PL/SQL V.23的PL/SQL引擎。GKD-Base PL/SQL引擎包括编译器、解释器和异常处理三个模块。在编译阶段,根据PL/SQL语言兼有过程式语句和SQL语句的特点,采取分而治之策略,把过程语句和SQL语句分开处理。对于SQL语句,编译器首先建立SQL语句结点,进行相应的变量绑定和语法检查;检查无误后产生语法树形式的中间代码。对于过程语句,编译器将对语句成分进行语法分析,对声明的变量和数据类型建立相应的符号表,最终产生语法树形式的中间代码。解释器的作用是对编译器生成的中间代码进行解释执行。解释器与编译器对应,具有相对独立的SQL语句解释模块和过程语句解释模块。另外,解释器还包括执行状态堆栈的管理、与GKD-Base SQL引擎的调用接口。异常处理模块主要实现程序运行时的错误检查和报告,并支持用户自定义异常和预定义异常的检查和处理。GKD-Base PL/SQL引擎可以实现对过程式语句、SQL语句与游标、存储子程序及包的编译和解释执行。2 触发器实现的关键问题触发器定义了当某些数据库相关事件发生时数据库应采取的动作。触发器可增强引用完整性,加强复杂业务的规则,或者监控数据库的变动,其实现主要涉及到触发事件的检测以及触发条件的判决等关键技术问题。2.1 触发器的事件检测机制触发器事件检测机制包括对事件的检测和存储,是实现触发器的关键。触发器检测的事件类型比较简单,基本事件主要包括对数据的插入、删除以及更新等。GKD-Base的触发器在对事件检测时,直接在相关事件发生的前后调用检测函数截获并分析事件消息,以确定是否对触发器点火。触发器事件检测机制实现的关键在于对触发事件的存储。触发事件具有时间顺序,因此存储时也必须按照严格的时间顺序进行存储。综合比较各个商用和实验数据库系统的事件表存储机制,选择了Starburst的双的双HASH链表存储机制,如图1。 这里,变迁表分为两种类型:NEW和OLD,分别对应于触发器行级别操作中的NEW值和OLD值。变迁表中存储了事件类型、当前数据表以及事件作用的元组。系统可以通过这个驻留内存的双HASH链表实现数据库变迁的快速定位和跟踪处理。2.2 触发器的条件判决机制触发器的条件判决机制是触发器的核心,根据SQL99标准的定义,可以将触发器分为前触发、约束判定和后触发三种类型。这三种类型触发器的判决顺序策略如图2。 触发器的条件评估是影响触发器机制的最关键因素。在数据库环境中,大多数数据修改行为只能影响数据库的一小部分内容,因此没必要每次都从头开始评估触发器规则条件,Rete

第14章习题参考答案

第十四章习题参考答案 14.1若在题14.1图电路中的CP、S、R输入端,加入如题14.1图所示波形的信号,试画出其Q和Q端波形,设初态Q=0。 题14.1图 14.2设题14.2图中各触发器的初始状态皆为Q=0,画出在CP脉冲连续作用下个各触发器输出端的波形图。 CP 题14.2图 14.3试写出题14.3图(a)中各触发器的次态函数(即Q1 n+1 、Q2 n+1与现态和输入变量之间的函数式),并画出在题14.3图(b)给定信号的作用下Q1、Q2的波形。假定各触发器的初始状态均为Q=0。

CP A B 题14.3图 14.4题14.4图(a)、(b)分别示出了触发器和逻辑门构成的脉冲分频电路,CP脉冲如题14.4图(c)所示,设各触发器的初始状态均为0。 (1)试画出图(a)中的Q1、Q2和F的波形。 (2)试画出图(b)中的Q3、Q4和Y的波形。 CP 题14.4图 14.5电路如题14.5图所示,设各触发器的初始状态均为0。已知CP和A的波形,试分别画出Q1、Q2的波形。

A CP 题14.5图 14.6 电路如题14.6图所示,设各触发器的初始状态均为0。已知CP 1、CP 2的波形如图示,试分别画出Q 1、Q 2的波形。 Q 2 Q 1 CP 1 CP 2 题14.6图 14.7 略 14.8 略 14.9 利用74LS160芯片分别构成60进制计数器和24进制计数器。

14.10 略。 14.11 略。 14.12 已知计数器的输出端Q 2Q 1Q 0的输出波形如题14.12图所示,试画出其对应的状态转换图,并判断该计数为几进制计数器? 上升沿触发,下中上依次为:Q 2Q 1Q 0 7进制计数器 题14.12图 14.13 分析题14.13图时序电路的逻辑功能,写出电路的驱动方程、状态方程,设各触发器的初始状态为0,画出电路的状态转换图,说明电路能否自启动。 00110 22101n n n J K J K Q J K Q Q ====== ____10 0________11010 1___________12 1 2 10 2 n n n n n n n n n n n n n n Q Q Q Q Q Q Q Q Q Q Q Q Q Q +++==+=+ 8进制加法计数器

触发器与游标

创建触发器 为了演示触发器的功能,下面再引入一个简易仓库管理的例子。在采购配件前,必须首先制定采购计划(如采购计划表 PlanA),然后交由采购员采购,采购回来后,要将配件入库,入库时,除了要修改入库表(配件入库表 InStock)外,还要修改配件库存表(仓库库存表 Stock),还要修改采购计划表(采购计划表 PlanA),因为要修改实际完成的采购量(FinishQty)。三个数据表如下: 采购计划表 PlanA 备件入库表 InStock 备件库存表 Stock 给计划表追加如下数据 一、用企业管理器创建触发器 例1:对备件入库InStock表建立一个插入触发器utr_InStockIns,其功能为:备件入库时,除了要将入库数据追加到备件入库表(InStock)外,还要修改计划表(PlanA)中对应计划号的完成数量(增加FinishQty)和备件库存表(Stock)中对应备件代码的库存数量(StockQty)。 注:同企业管理器创建的触发器

例2:对备件入库表建立一个删除触发器utr_InStockDel,其功能为:删除备件入库中的记录时,除了要删除入库表(InStock)的记录外,还要修改计划表(PlanA)中对应计划号的完成数量(减少FinishQty),还要删除备件库存表(Stock)中对应备件代码的记录。

例3:对备件入库表建立一个更改除触发器utr_InStockUpt,其功能为:更改备件入库中的记录时,除了要更改入库表(InStock)的记录外,还要更改备件库存表(Stock)中对应备件代码的数据,同时,还要更改计划表(PlanA)中对应计划号的完成数量(FinishQty)。

相关文档
最新文档