数据库实验触发器题目

数据库实验触发器题目
数据库实验触发器题目

/*1一个用于跟踪哪个用户、何时间更新了Account表的balance*/

create table trigger_account

(

account_number char(10),

branch_name char(15),

userOfUpdate char(16) null,

timeOfUpdate DA TETIME NULL,

balance_old numeric(12,2) NULL,

balance_new numeric(12,2) NULL

)

CREA TE TRIGGER modify_account ON account AFTER UPDA TE

AS

IF UPDA TE(balance)

BEGIN

DECLARE @balance_newnumeric(12,2)

DECLARE @balance_oldnumeric(12,2)

DECLARE @account_numberchar(10)

DECLARE @branch_namechar(15)

SELECT @balance_old=(SELECT balance FROM deleted)

SELECT @balance_new=(SELECT balance FROM inserted)

SELECT @account_number=(SELECT account_number FROM deleted)

SELECT @branch_name=(SELECT branch_name FROM deleted)

INSERT INTO trigger_accountV ALUES(@account_number,@branch_name,USER_NAME(),GETDA TE(),@bal ance_old,@balance_new)

END

/*检验*/

--插入数据

insert into branch values('建设银行','烟台',1883333338)

insert into account values('22222222','建设银行',100000)

--检验

update account set balance=150000 where account_number='22222222'

select * from trigger_account

/*2.另一个用于跟踪哪个用户、何时间更新了loan表的amount*/

create table trigger_loan

(

loan_number char(10),

branch_name char(15),

userOfUpdate char(16) null,

timeOfUpdate DA TETIME NULL,

amount_old numeric(12,2) NULL,

amount_new numeric(12,2) NULL

CREA TE TRIGGER modify_loan ON loan AFTER UPDA TE

AS

IF UPDA TE(amount)

BEGIN

DECLARE @amount_newnumeric(12,2)

DECLARE @amount_oldnumeric(12,2)

DECLARE @loan_numberchar(10)

DECLARE @branch_namechar(15)

SELECT @loan_number=(SELECT loan_number FROM deleted)

SELECT @amount_old=(SELECT amount FROM deleted)

SELECT @amount_new=(SELECT amount FROM inserted)

INSERT INTO trigger_loanV ALUES(@loan_number,@branch_name,USER_NAME(),GETDA TE(),@amount_ol d,@amount_new)

END

/*检验*/

--插入数据

insert into branch values('烟台银行','烟台',100000000)

insert into loan values('11111111','烟台银行',100000)

--检验

update loan set amount=150000 where loan_number='11111111'

select * from trigger_loan

/*3.当Branch表的city为NULL时,一律写成“presently uncertain”*/

create trigger city_null on branch for insert,update

as

declare @city char(30)

declare @name char(15)

select @city=(select branch_city from inserted)

select @name=(select branch_name from inserted)

if @city='NULL'

begin

update branch set branch_city='presently uncertain' where branch_name=@name

end

/*验证*/

insert into branch values('中国人民银行','null',122222)/*插入验证*/

select * from branch

insert into branch values('中国华夏银行','烟台',2881991991)

update branch set brach_city='null' where branch_name='中国华夏银行'/*更新验证*/

select * from branch

/*************************课本作业************************************************************/

/*************第一题:当branch中branch_city为null时更名为unknow**********/

create trigger cityNull1 on branch for insert,update

as

declare @city char(30)

declare @name char(15)

select @city=(select branch_city from inserted)

select @name=(select branch_name from inserted)

if @city='NULL'

begin

update branch set branch_city='unknow' where branch_name=@name

end

/*验证*/

insert into branch values('中国农业银行','null',11122222)/*插入验证*/

select * from branch

insert into branch values('邮政储蓄银行','烟台',2881991991)

update branch set branch_city='null' where branch_name='邮政储蓄银行'/*更新验证*/ select * from branch

/*第二题仓库库存问题*********************************************/ create trigger reorder_trigger on inventory for update

as if update(levels)

begin

declare @level_old numeric(12,2)

declare @level_new numeric(12,2)

declare @item char(10)

declare @amount numeric(12,2)

select @level_old=(select levels from deleted)

select @level_new=(select levels from inserted)

select @item=(select item from deleted)

select @amount=(select amount from reorder where reorder.item=@item)

if (@level_new<=(select levels from minlevel where minlevel.item=@item)

and @level_old>(select levels from minlevel where minlevel.item=@item) )

insert into orders values(@item,@amount)

end

/*验证*/

insert into inventory values('原料x',60)

insert into minlevel values('原料x',50)

insert into reorder values('原料x',100)

update inventory set levels=20 where item='原料x'

select * from orders

/*第三题:银行处理透支情况*********************/

create trigger overdraft_trigger on account for update

as if update(balance)

declare @account_num char(10)

declare @balance_new numeric(12,2)

select @account_num=(select account_number from deleted)

select @balance_new=(select balance from inserted)

if(@balance_new<0)

begin

insert into loan select account_number,branch_name,-balance

from account where account_number=@account_num

insert into borrower select * from depositor where account_number=@account_num

update account set balance=0 where account_number=@account_num

end

/*检验*/

insert into account values('1111110','民生银行',1000)

insert into customer values('Jom','烟台','南大街')

insert into branch values('民生银行','烟台','1000000000')

insert into depositor values('Jom','1111110')

update account set balance=-1000 where account_number='1111110'

select * from loan

select * from account

/*第四题:在对账号执行delete操作时,对账号的每一个拥有者,检查他是否有其他账户,如果没有,把他从depositor中删除*/

create trigger dele_depositor_trigger on account instead of delete

as

begin

declare @account_num char(10)

select @account_num=(select account_number from deleted)

delete from depositor where account_number=@account_num

delete from depositor where account_number=@account_num

end

--验证

insert into account values('1111110','民生银行',1000)

insert into customer values('Join','烟台','南大街')

insert into account values('12222222', '民生银行',10000)

insert into account values('13333333', '民生银行',10000)

insert into depositor values('Join','12222222' )

insert into depositor values('Join','13333333' )

insert into customer values('Bob','烟台','南大街')

insert into account values('4444444444', '民生银行',10000)

insert into depositor values('Bob','4444444444' )

delete from account where account_number='12222222'

delete from account where account_number='4444444444'

触发器实验 3

实验(一):MS SQL Server的使用和管理 一、实验目的 ①掌握T-SQL语言中几个常用流程控制语句的使用。 ②通过对常用系统存储过程的使用,了解存储过程的类型。 ③通过创建和执行存储过程,了解存储过程的基本概念,掌握使用存储过程的操作技巧和方法。 二、实验内容 ①用两种方法(if…else语句与while、break和continue语句)实现1+2+3……+100值的计算。 ②活期存款中,“储户”通过‘存取款单’和“存储所”发生关系。假定储户包括:账号,姓名,电话,地址,存款额;“储蓄所”包括:储蓄所编号,名称,电话,地址。假定一个储户可以在不同的储蓄所存取款,试完成以下设计: 1.创建一个数据库名为SA VE,按要求在SA VE数据库中创建以上的那三个表“储户”、“存取款单”、“储蓄所”。在三张表中自己选择应该在哪些列创建主键外键约束。 2.为“存取款单”表创建一个CHECK约束,使存取标志列的值要么是1要么是0。3.创建一个触发器TR1完成下面的内容: 当向“存取名单”表中插入数据时,如果存取标志=1则应该更正储户表让存款额加上存取金额,如果存取标志=0则应该更正储户表让存款额减去存取金额,如果余额不足则显示余额不足错误。 4.创建一个视图显示用户账号、用户姓名、存款额和所在银行。 5.创建存储过程INPUT_PROC,OUT_PROC分别用于存款和取款,即向存取款单中插入数据。 三、实验步骤 1.启动sql查询分析器,运行相关sql脚本。 2.脚本文件如下: 创建一个数据库名为SA VE: CREATE DATABASE[SA VE] ON PRIMARY (NAME=lfm1_dat, FILLENAME='c:\SAVE.DA TA.mdf', SIZE=10, MAXSIZE=50, FILEGROWTH=15%) LOG ON (NAME='lfm_log', FILENAME='c:\SAVELOG.ldf', SIZE=5MB, MAXSIZE=25MB, FILEGROWTH=5MB) 创建以上的那三个表“储户”、“存取款单”、“储蓄所”,在三张表中自己选择应该在哪些列创建主键外键约束。 CREATE TABLE 储户 (账号INT PRIMARY KEY,姓名CHAR(10),电话INT,地址CHAR(10),存款额MONEY)

存储过程与触发器实验

第一章存储过程与触发器实验 实验目的 1.理解存储过程的工作原理和作用。 2.掌握存储过程设置和程序设计过程。 3.理解触发器的工作原理和作用。 4.掌握触发器编写方法。 实验环境 采用IBM DB2或Sybase数据库管理系统作为实验平台。其中,DB2可以采用DB2 Express-C或DB2 V8 Enterprise。 实验完成人:李肇臻,谢锦 实验内容 一、存储过程实验 1.针对下面2个完整性约束条件,建立存储过程,实现当数据导入或更新时,可以自动修改拥塞率、半速率话务量比例 (1)拥塞率=拥塞数量/呼叫数量 (2)半速率话务量比例=半速率话务量/全速率话务量 在DB2CMD中运行,win7用管理员权限。 create procedure M() language SQL begin update CALLDATA set "callcongs"="congsnum"/"callnum" where "congsnum"<>0 and "callnum"<>0; update CALLDATA set "rate"="thtraff"/"traff" where "thtraff"<>0 and "traff"<>0; end @ 2.将存储过程添加到数据库服务器上

3.在客户端编写调用存储过程的主程序 4.运行客户端程序,调用存储过程,观察存储过程执行过程和数据更新情况;调用就用db2 CALL M() 二、触发器实验 1. 针对下列约束条件,分别建立1个触发器: 1)每个小区/扇区最多占用14个TCH频点,合法频点范围在[1,60]之间。当向小区中新加入频点时,如果小区中现有频点数目已达到14个,则用新加入的频点替换现有频点中的最小频点;当修改或新加入频点时,如果发现频点不在合法范围内,则输出提示信息,并拒绝该操作。 create trigger first_1 after insert on FREQUENCY

数据库实验报告(7)-触发器

桂林航天工业学院学生实验报告 实验七 实验名称触发器实验日期2019.11.12 实验目的 1.了解触发器的基本原理,掌握创建触发器的方法。 2.掌握修改和删除触发器的方法,能够设计简单的触发器。 实验内容触发器 实验方法及步骤 1、创建一个触发器InsStud,当向student表插入一条记录时,同时把该记录插入到关系student2。 CREATE TRIGGER InsStud on student FOR INSERT AS insert into student2 select*from inserted 2、向student表中插入一条记录('201215130','张三','男',20,'CS'),查看student和student2表中记录的变化是什么? student和student2表中都能插入('201215130','张三','男',20,'CS')这条记录 insert student values('201215130','张三','男',20,'CS'); select*from student select*from student2 3、创建一个触发器DelStud,当向student表删除一条记录时,同时把该记录从student2表删除掉。

CREATE TRIGGER DelStud on student FOR delete AS delete student2 select*from deleted 4、删除student表中的sno为201215130的元组,同时查看student2表中元组的变化是什么? student和student2表中都能删除('201215130','张三','男',20,'CS')这条记录。 delete student where sno='201215130' select*from student select*from student2 5、为course表创建一个名为del_rollback_tr的DELETE触发器,该触发器的作用是禁止删除course表中的记录。 CREATE TRIGGER del_rollback_tr on course FOR delete AS if (exists(select*from deleted)) rollback insert course values('8','张','5',2); delete course where cno='8'

实验三 触发器特性测试

- -- 数字逻辑实验指导书 葛长赟编写 大连东软信息学院 电子工程系 2016年8月 - . -word资

引言 《数字逻辑》是软件工程专业的必修课,为后续课程的实施,为进一步学习各专业后续课程打下基础,是一门理论与实践相结合的课程。 通过这门课程的学习,使学生掌握数字电路与系统的基本工作原理和分析设计方法;理解标准的集成电路器件使用方法为后续学习奠定基础。 本门课程理论内容包括:数制与码制、逻辑代数基础、组合逻辑电路的分析和设计、各种触发器及时序逻辑电路的分析和设计等,除数制与码制外,每部分内容都配备有相应的实验室实验,帮助学生理解和掌握相关知识内容。 本实验指导书旨在对《数字逻辑》课程的实验进行规范,内容包括:实验目的和要求、设备或环境、实验原理(项目分析和设计)、实验内容(项目实施)等。学生可遵照本实验指导书内容完成相应实验并提交实验报告。

设备与工具 这章主要介绍本实验指导书中会用到的硬件设备。 信号发生器 信号发生器是一台具有高度稳定性、多功能等特点的函数信号发生器。能直接产生正弦波、三角波、方波、斜波、脉冲波,波形对称可调并具有反向输出,直流电平可连续调节。TTL可与主信号做同步输出。还具有VCF 输入控制功能。频率计可做内部频率显示,也可外测1Hz~10.0MHz的信号频率,电压用LED显示。 万用表 万用表是一种多功能、多量程的便携式电子电工仪表,一般的万用表可以测量直流电流、直流电压、交流电压、电阻等。有些万用表还可测量电容、电感、功率、晶体管共射极直流放大系数等。 数字电路实验箱 数字电路实验箱可以为学生提供内容丰富的实验平台,结构设计灵活,可在此平台上搭建电路,完成数字电路课程要求的基本实验。

基本门电路及触发器 电子版实验报告

J CP K S D R D Q Q S D R D D CP Q Q 43121556423156实验三:基本门电路及触发器 实 验 室: 实验台号: 日 期: 专业班级: 姓 名: 学 号: 一、 实验目的 二、实验内容 (一)验证以下门电路的逻辑关系 1. 用与非门(00)实现与门逻辑关系:F=AB 2. 异或门(86): (二):门电路的设计(二选一) 1.用74LS00和74LS86 设计半加器. 2.用TTL 与非门设计一个三人表决电路。 A B C 三个裁判,当表决某个提案时,多数人同意提案为通过。 (1为同意,0为不同意) 要求:用74LS00和 74LS10芯片。 (三)验证JK 触发器的逻辑关系 1.J-K 触发器置位端、复位端及功能测试。 图3-1 JK 触发器(74LS112)和D 触发器(74LS74) 2、设计J-K 触发器转化成D 触发器的电路 利用与非门和J-K 触发器设计并测试逻辑功能。 B A B A B A F ⊕=+=n n n n n n n B A B A B A S ⊕=+=' n n n B A C ='

&A B &F 三、实验原理图 图3-2与门电路 图3-3异或门电路 图3-4半加器 四、实验结果及数据处理 1. 直接在实验原理图上标记芯片的引脚。 2. 写出实验结果。 (1)与门、异或门实验结果表(用数字万用表测量高低电平1、0的电压值。) 输入 与门 异或门 A B F U o (V ) F 0 0 0 1 1 0 1 1 (2)半加器实验结果 (3) 表决电路结果 A n B n n S ' n C ' 0 0 0 1 1 0 1 1 A B C F 0 0 0 0 0 1 0 1 0 0 1 1 =1A B F

mysql触发器异常处理

MySQL触发器异常处理 MySQL触发器更新本表数据异常:Can't update table 'tbl' in stored function/trigger because it is already used by statement which invoked this 如果你在触发器里面对刚刚插入的数据进行了 insert/update, 则出现这个问题。因为会造 成循环的调用. create trigger test before update on test for each row update test set NEW.updateTime = NOW() where id=NEW.ID; END 应该使用set操作,而不是在触发器里使用 update,比如 create trigger test before update on test for each row set NEW.updateTime = NOW(); END MySQL触发器执行复合语句 触发器1.自增表中商品分类编码值+1,添加商品分类前给商品分类编码属性赋其对应的自 增表中的值 CREATE TRIGGER trigger1 BEFORE INSERT ON dw_base_commodity_category_info FOR EACH ROW BEGIN UPDATE sequence SET current_value=current_value+1 WHERE `name`='dw_base_commodity_category_info'; SET NEW.code=(SELECT current_value FROM sequence WHERE `name`='dw_base_commodity_category_info'); END; 删除触发器1:DROP TRIGGER trigger1; 触发器2.自增表中商品编码值+1,添加商品前给商品编码属性赋其对应的自增表中的值 CREATE TRIGGER trigger2 BEFORE INSERT ON dw_commodity_fact_info

大数据库实验6触发器实验报告材料

淮海工学院计算机工程学院实验报告书 课程名:《数据库原理及应用》 题目:存储过程和触发器 班级:软件132 学号: 2013122907 姓名:孙莹莹 评语: 成绩:指导教师: 批阅时间:年月日

一.目的与要求 1.掌握存储过程的创建方法; 2.掌握存储过程的执行、修改和删除等操作; 3.掌握触发器的创建方法; 4.掌握触发器的使用、修改和删除等相关内容 二.实验内容 基于前面建立的factory数据库,使用T-SQL语句完成如下各小题的功能: 1.创建一个为worker表添加职工记录的存储过程Addworker; 2.创建一个存储过程Delworker删除worker表中指定职工号的记录。 3.显示存储过程Delworker; 4.删除存储过程Addworker和Delworker. 三.实验步骤 1 . (1)建立存储过程 USE factory GO CREATE PROCEDURE Addworker @no int=NULL, @name char(10)=NULL, @sex char(2)=NULL, @birthday datetime=NULL, @na char(2)=NULL, @wtime datetime=NULL, @depno int=NULL AS IF @no IS NULL OR @name IS NULL OR @sex IS NULL OR @birthday IS NULL OR @depno IS NULL BEGIN PRINT '请重新输入该职工信息!' PRINT '你必须提供职工号、姓名、性别、出生日期、部门号' RETURN END BEGIN TRANSACTION INSERT INTO worker VALUES(@no,@name,@sex,@birthday,@na,@wtime,@depno) IF @@error<>0 BEGIN ROLLBACK TRAN RETURN END

mysql设置触发器权限问题的解决方法

本文实例讲述了mysql设置触发器权限的方法,针对权限错误的情况非常实用。具体分析如下: mysql导入数据提示没有super privilege权限处理,如下所示: 1 error 1419 (hy000): you do not have the super privilege and binary logging is enabled 导入function 、trigger 到mysql database,报错: 1 you do not have the super privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)”. 原因: function / trigger 中有dangerous statements修改数据库,错误只在启用binary logging选项进行主从复制的服务器上出现。 解决方法如下: 1)导入数据的用户不仅需要create routine, alter routine, create trigger, alter trigger, create function 和alter function 权限,还需要super privileges 权限,使用超级用户导入数据。 2)让所有用户具有执行类似functions的权限,危险,不推荐, 123 o by specifying it on the server start, like: –log-bin-trust-function-creators=1 o by setting it to 1 through the set global statement, like: mysql> set global log_bin_trust_function_creators = 1; 3)如果不需要复制,或者是从库,关闭binlog, 1234 # binary logging –not required for slaves, but recommended #log-bin=mysql-bin # binary logging format –mixed recommended #binlog_format=mixed 希望本文所述对大家的mysql数据库设计有所帮助。 更多信息请查看IT技术专栏

数电实验触发器及其应用

数电实验触发器及其应用 数字电子技术实验报告 实验三: 触发器及其应用 一、实验目的: 1、熟悉基本RS触发器,D触发器的功能测试。 2、了解触发器的两种触发方式(脉冲电平触发和脉冲边沿触发)及触发特点 3、熟悉触发器的实际应用。 二、实验设备: 1 、数字电路实验箱; 2、数字双综示波器; 3、指示灯; 4、74LS00、74LS74。 三、实验原理: 1、触发器是一个具有记忆功能的二进制信息存储器件,是构成多种时序 电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。在数字系统和计算机中有着广泛的应用。触发器具有两个稳定状态,即“0”和“ 1 ”,在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。触发器有集成触发器和门电路(主要是“与非门” )组成的触发器。 按其功能可分为有RS触发器、JK触发器、D触发器、T功能等触发器。触发方式有电平触发和边沿触发两种。 2、基本RS触发器是最基本的触发器,可由两个与非门交叉耦合构成。 基本RS触发器具有置“ 0”、置“ 1”和“保持”三种功能。基本RS触发器

也可以用二个“或非门”组成,此时为高电平触发有效。 3、D触发器在CP的前沿发生翻转,触发器的次态取决于CP脉冲上升沿n+1来到之前D端的状态,即Q = D。因此,它具有置“ 0”和“T两种功能。由于在CP=1期间电路具有阻塞作用,在CP=1期间,D端数据结构变RS化,不会影响触发器的输出状态。和分别是置“ 0”端和置“ 1” DD 端,不需要强迫置“ 0”和置“ 1”时,都应是高电平。74LS74(CC4013, 74LS74(CC4042均为上升沿触发器。以下为74LS74的引脚图和逻辑图。 馬LD 1CP 1云IQ LQ GM) 四、实验原理图和实验结果: 设计实验: 1、一个水塔液位显示控制示意图,虚线表示水位。传感器A、B被水浸沿时

实验五 存储过程和触发器的定义和使用3

实验五存储过程和触发器的定义和使用 一、实验目的 1、掌握局部变量、全局变量、流程控制语句的使用方法 2、了解存储过程的类型和作用,并掌握使用对象资源管理器和Transact-SQL语句创建 存储过程的方法及使用方法。 3、理解触发器的特点和作用,并掌握使用Transact-SQL语言创建触发器的方法 二、实验内容 1.在学生成绩库中中有如下各表: 学生表(Student) 学号姓名性别出生日期专业所在系联系电话020101杨颖01980-7-20计算机应用计算机88297147 020102方露露01981-1-15信息管理计算机88297147 020103俞奇军11980-2-20信息管理计算机88297151 020104胡国强11980-11-7信息管理计算机88297151 020105薛冰11980-7-29水利工程水利系88297152 020201秦盈飞01981-3-10电子商务经济系88297161 020202董含静01980-9-25电子商务经济系88297062 020203陈伟11980-8-7电子商务经济系88297171 020204陈新江11980-7-20房建水利系88297171 create database学生成绩数据库 create table Student ( 学号Char(6)not null, 姓名Char(8)not null, 性别Bit not null, 出生日期smalldatetime, 专业Char(10), 所在系Char(10), 联系电话Char(11)null ) 课程表(Course) 课程号课程名教师开课学期学时学分 101计算机原理陈红2453 102计算方法王颐3453 103操作系统徐格2604 104数据库原理及应用应对刚3755 105网络基础吴江江4453 106高等数学孙中文1906 107英语陈刚1906 108VB程序设计赵红韦3705

MySQL触发器

MySQL 5.0 触发器 MySQL 5.0 新特性系列 C 第 2 部分 MySQL 技术白皮书 Peter Gulutzan March, 2005 翻译:陈朋奕 毕业于西安电子科技大学 现泛华讯电脑技术 版权说明版权说明::本手册参考之原文本手册参考之原文的版权属的版权属 MySQL AB,而本手册可自由使用而本手册可自由使用、、修改修改、、散发散发、、转载和商业用途转载和商业用途,, 但必须保留译者署名但必须保留译者署名。。由此引发的版权问题由此引发的版权问题,,译者不负责任译者不负责任。。(btw :可能会有错别字或错误可能会有错别字或错误,,但不影响阅读但不影响阅读)) Cop yright 2005, MySQL AB

Table of Contents Introduction (3) Conventions and Styles (3) Why Triggers (3) 1. Syntax: Name (4) 2. Syntax: Time (5) 3. Syntax: Event (5) 4. Syntax: Table (5) 5. Syntax: Granularity (5) 6. Syntax: Statement (6) Privileges (6) Referring to OLD and NEW columns (6) Example of CREATE and INSERT (7) Example of a "check" constraint (7) Conclusion (9) About MySQL (9) Copyri ght 2005, MySQL AB Page 2

存储过程和触发器(数据库实验5)

数据库基础与实践实验报告实验五存储过程和触发器 班级:惠普测试142 学号:1408090213 姓名:闫伟明 日期:2016-11-14

1 实验目的: 1)掌握SQL进行存储过程创建和调用的方法; 2)掌握SQL进行触发器定义的方法,理解触发器的工作原理; 3)掌握触发器禁用和重新启用的方法。 2 实验平台: 操作系统:Windows xp。 实验环境:SQL Server 2000以上版本。 3 实验内容与步骤 利用实验一创建的sch_id数据库完成下列实验内容。 1.创建存储过程JSXX_PROC,调用该存储过程时可显示各任课教师姓名及其所教课程名称。 存储过程定义代码: CREATE PROCEDURE JSXX_PROC AS SELECT tn 教师姓名,cn 所教课程FROM T,TC,C WHERE T.tno=TC.tno AND https://www.360docs.net/doc/369106171.html,o=https://www.360docs.net/doc/369106171.html,o 存储过程执行语句与执行结果截图: EXECUTE JSXX_PROC 2.创建存储过程XM_PROC,该存储过程可根据输入参数(学生姓名)查询并显示该学生的学号、 所学课程名称和成绩;如果没有该姓名学生,则提示“无该姓名的同学”。 存储过程定义代码:

CREATE PROCEDURE XM_PROC @sname VARCHAR(100) AS BEGIN IF EXISTS(SELECT NULL FROM S WHERE sn=@sname) SELECT S.sno 学号,cn 课程,score 成绩FROM S,SC,C WHERE https://www.360docs.net/doc/369106171.html,o=https://www.360docs.net/doc/369106171.html,o AND SC.sno=S.sno AND S.sn=@sname ELSE PRINT'无该姓名的同学。' END 运行截图: 3.创建存储过程XBNL_PROC,该存储过程可根据输入参数(专业名词,默认值为计算机专业), 统计并显示该专业各年龄段男、女生人数。如果没有该专业,则显示“无此专业”。 存储过程定义代码: CREATE PROCEDURE XBNL_PROC @departName VARCHAR(30)='计算机', @begin INT, @end INT AS

mysql 触发器使用实例

mysql 触发器使用实例(修改一个表内容的同时另一个表内容自动变化) [分享]触发器小例子 触发器能进行一些约束. 这是个小例子,当Student表的StudentID列被发生更改时,BorrowStudent表的StudentID列也跟着更改.如果Student表删除某记录,BorrowStudent也删除对应StudentID的记录. /*先删除将要创建而存在的表*/ drop table if exists Student; drop table if exists BorrowStudent; /*创建表*/ create table Student( StudentID int not null primary key, StudentName varchar(30) not null, StudentSex enum('m','f') default 'm' )engine=myisam; create table BorrowStudent( BorrowRecord int not null auto_increment primary key, StudentID int not null, BorrorDate date, ReturnDate date, foreign key(StudentID) references Student(StudentID) )engine=myisam; /*插入记录*/ insert into Student values(1235412,'java','m'); insert into Student values(3214562,'jiajia','m'); insert into Student values(5441253,'purana','f'); insert into BorrowStudent(StudentID,BorrorDate,ReturnDate) values(1235412,'2007-01-01','2007-01-07'); insert into BorrowStudent(StudentID,BorrorDate,ReturnDate)

数据库实验三触发器的创建修改及删除

昆明理工大学信息工程与自动化学院学生实验报告 ( 2010 —2011 学年第二学期) 课程名称:数据库高级应用开课实验室:计算中心208 2011年 5月 17日 年级、专业、班学号姓名成绩 实验项目名称触发器的创建、修改及删除指导教师 教师 评语 教师签名: 年月日一、实验目的、要求 目的:了解触发器的功能 掌握触发器的使用方法 要求:实现简单触发器的使用 二、实验所用仪器、材料 微型计算机一台 SQL server 2008 三、实验原理 触发器与存储过程非常相似,触发器也是SQL 语句集,两者惟一的区别是触发器不能用EXECUTE 语句调用,而是在用户执行Transact-SQL 语句时自动触发(激活)执行。触发器是一个在修改指定表中的数据时执行的存储过程。经常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性或者一致性。由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以此确保数据的完整性。触发器不同于存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如UPDATE、INSERT、DELETE 这些操作时,SQL Server 就会自动执行触发

器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。 四、实验过程及数据记录 创建触发器BB(修改表S中的数据时SC中的数据也同时修改了) CREATE TRIGGER BB ON S FOR UPDATE AS IF UPDATE(S#) BEGIN UPDA TE SC SET SC.S#=A.S#FROM INSERTED A,DELETED B WHERE SC.S#=B.S# END 查看表SC的数据 SELECT*FROM SC WHERE S#='200510405101' 修改表S中的数据 UPDA TE S SET S#='000000000000' 查看表SC中的数据(验证触发器的效果) SELECT*FROM SC WHERE S#='000000000000'

数据库存储器与触发器实验报告(互联网+)

南昌航空大学实验报告 二0一七年 5 月 3 日 课程名称:数据库概论实验名称:存储器与触发器 班级:xxx 姓名:xxx 同组人: 指导教师评定:签名: 一、实验环境 1.Windows2000或以上版本; 2.SQLServer2000或2005。 二、实验目的 1.掌握存储过程的创建,修改,使用,删除; 2.掌握触发器的创建,修改,使用,删除。 三、实验步骤及参考源代码 1.创建过程代码: CREATE PROCEDURE C_P_Proc(@ccna varchar(10),@cno char(4)OUTPUT,@cna varchar(10)OUTPUT,@pna varchar(20)OUTPUT,@num int OUTPUT) AS SELECT @cna=cna,@cno=https://www.360docs.net/doc/369106171.html,o,@pna=pna,@num=num FROM cp,customer,paper WHERE https://www.360docs.net/doc/369106171.html,o=https://www.360docs.net/doc/369106171.html,o AND paper.pno=cp.pno AND cna=@ccna;

6.执行存储过程C_P_Pro,实现对李涛,钱金浩等不同顾客的订阅信息查询execute C_P_Proc@name='李涛' execute C_P_Proc@name='钱金浩' 7,删除存储过程C_P_Prcc DROP PROCEDURE C_P_PROC (4)在DingBao数据库中针对PAPER创建插入触发器TR_PA PER_I、删除触发器TR_PAPER_D、修改触发器TR_PAPER_U。具体要求如下。

<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) update paper set ppr=10 where paper.pno=@ipno end

数电实验报告:实验3-触发器

广东海洋大学学生实验报告书(学生用表) 实验名称 课程名称 课程号 学院(系) 专业 班级 学生姓名 学号 实验地点 实验日期 实验3:触发器逻辑功能测试及应用 一、实验目的 1、掌握集成触发器的逻辑功能及使用方法 2、熟悉触发器之间相互转换的方法 二、实验内容及步骤 1、测试双JK 触发器74LS112逻辑功能。 在输入信号为双端的情况下,JK 触发器是功能完善、使用灵活和通用性较强的一种触发器。本实验采用74LS112双JK 触发器,是下降边沿触发的边沿触发器。JK 触发器的状态方程为Q * =J Q +K Q (1)JK 触发器74LS112逻辑电路引脚图如下: 图1 (2)测试复位、置位功能,将测试结果填入表1。 表1 (3)触发功能测试,按表2要求测试JK 触发器逻辑功能。 表2 GDOU-B-11-112

(4) 根据图 2逻辑图将JK 触发器分别连接成T 触发器和T ′触发器,并通过做实验进行验证。 注释:T 触发器的逻辑功能:当T =0时,时钟脉冲作用后,其状态保持不变;当T =1时,时钟脉冲作用后,触发器状态翻转。如果将T 触发器的T 端置“1”,即得T'触发器。在T'触发器的CP 端每来一个CP 脉冲信号,触发器的状态就翻转一次,故称之为反转触发器,广泛用于计数电路中。 图2 2、测试双D 触发器74LS74的逻辑功能 在输入信号为单端的情况下,D 触发器用起来最为方便,其状态方程为 Q * =D ,其输出状态的更新发生在CP 脉冲的上升沿,故又称为上升沿触发的边沿触发器,触发器的状态只取决于时钟到来前D 端的状态,D 触发器的应用很广,可用作数字信号的寄存,移位寄存,分频和波形发生等。 (1)D 触发器74LS74逻辑电路引脚图3所示。

实验6 数据库实验——存储过程和触发器

实验6 存储过程与触发器 一、实验目的 1、加深与巩固对存储过程与触发器概念的理解。 2、掌握触发器的简单应用。 3、掌握存储过程的简单应用。 二、实验内容 一)存储过程: 1、创建一存储过程,求l+2+3+…+n,并打印结果。 CREATE PROCEDURE addresult AS DECLARE @n int=10,/*最后一个数*/ @i int=0, @result int=0 /*结果*/ BEGIN WHILE(@i<=@n) BEGIN SET @result=@result+@i SET @i=@i+1 END PRINT'1+2+3+、、、+n的结果就是:' PRINT @result RETURN(@result) END GO 2.调用上面的addresult存储过程,打印l十2+3+…+10的结果。EXEC addresult

3、修改上述存储过程为addresult1,使得@n为输入参数,其具体值由用户调用此存储过程时指定。 CREATE PROCEDURE addresult1 @n int=10 /*最后一个数*/ AS DECLARE @i int=0, @result int=0 /*结果*/ BEGIN WHILE(@i<=@n) BEGIN SET @result=@result+@i SET @i=@i+1 END PRINT'1+2+3+、、、+n的结果就是:' PRINT @result RETURN(@result) END GO 4、调用上面修改后的addresult1存储过程,打印l+2+3+…+100的结果。 EXEC addresult1 100 5.修改上述存储过程为addresult2,将@n参数设定默认值为10,并改设@sum为输出参数,让主程序能够接收计算结果。

实验三触发器,移位寄存器实验

实验三触发器、移位寄存器实验 一、实验目的 1、掌握基本SR触发器、D触发器、JK触发器的工作原理。 2、学会正确使用SR触发器、D触发器、JK触发器。 3、熟悉移位寄存器的电路结构及工作原理。 4、掌握中规模集成移位寄存器74LS194的逻辑功能及使用方法。 二、实验所用器件和仪表 1、四2输入与非门74LS00 1片 2、双D触发器74LS74 2片 3、双JK触发器74LS73 1片 4、四位双向通用移位寄存器74LS194 2片 5、万用表 6、示波器 7、实验箱 三、实验内容 1、设计基本SR触发器并验证其功能。 2、验证D触发器功能。 3、验证JK触发器功能。 4、使用74LS74双D触发器构成右移寄存器,测试工作情况。 5、使用74LS74双D触发器构成循环右移寄存器,测试工作情况。 6、验证双向移位寄存器74LS194的逻辑功能。 7、使用两片74LS194构成串/并行转换器。 四、实验接线图和测试步骤 根据触发器的定义,Q和Q应互补,因此R = 0,S = 0是非法状态。SR触发器真值表如下:

注:PR=S D,CLR=R D 上图是测试D触发器的接线图,K1、K2、K3是电平开关输出,LED0、LED1是电平指示灯,AK1宽单脉冲,1MHz、10MHz是时钟脉冲。左图为单次脉冲的测试,右图为连续脉冲的测试。 测试步骤如下: (1)CLR = 0,PR = 1,测得Q = ,Q = 。 (2)CLR = 1,PR = 1,测得Q = ,Q = 。 (3)CLR = 1,PR = 0,测得Q = ,Q = 。 (4)CLR = 1,PR = 1,测得Q = ,Q = 。 (5)CLR = 1,PR = 1,D = 1,CK接宽单脉冲,按按钮,测得Q = ,Q = 。(6)CLR = 1,PR = 1,D = 0,CK接宽单脉冲,按按钮,测得Q = ,Q = 。(7)CLR = 1,PR = 1,D接1MHz脉冲,CK接10MHz,在示波器上同时观测Q、CK 的波形,观测到Q的波形只在CK上升沿才发生变化。

触发器及其应用实验报告 - 图文-

实验报告 一、实验目的和任务 1. 掌握基本RS、JK、T和D触发器的逻辑功能。 2. 掌握集成触发器的功能和使用方法。 3. 熟悉触发器之间相互转换的方法。 二、实验原理介绍 触发器是能够存储1位二进制码的逻辑电路,它有两个互补输出端,其输出状态不仅与输入有关,而且还与原先的输出状态有关。触发器有两个稳定状态,用以表示逻辑状态"1"和"0飞在二定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态,它是一个具有记忆功能的二进制信息存储器件,是构成各种时序电路的最基本逻辑单元。 1、基本RS触发器 图14-1为由两个与非门交叉祸合构成的基本RS触发器,它是无时钟控制低电平直接触发的触发器。 基本RS触发器具有置"0"、置"1"和保持三种功能。通常称s为置"1"端,因为 s=0时触发器被置"1"; R为置"0"端,因为R=0时触发器被置"0"。当S=R=1时状态保持,当S=R=0时为不定状态,应当避免这种状态。

基本RS触发器也可以用两个"或非门"组成,此时为高电平有效。 S Q S Q Q 卫R Q (a(b 图14-1 二与非门组成的基本RS触发器 (a逻辑图(b逻辑符号 基本RS触发器的逻辑符号见图14-1(b,二输入端的边框外侧都画有小圆圈,这是因为置1与置。都是低电平有效。 2、JK触发器 在输入信号为双端的情况下,JK触发器是功能完善、使用灵活和通用性较强的一种触发器。本实验采用74LS112双JK触发器,是下降边沿触发的边沿触发器。引脚逻辑图如图14-2所示;JK触发器的状态方程为: Q,,+1=J Q"+K Q 3 5

J Q CLK K B Q 图14-2JK触发器的引脚逻辑图 其中,J和IK是数据输入端,是触发器状态更新的依据,若J、K有两个或两个以上输入端时,组成"与"的关系。Q和Q为两个互补输入端。通常把Q=O、Q=1的状态定为触发器"0"状态;而把Q=l,Q=0 定为"}"状态。 JK触发器常被用作缓冲存储器,移位寄存器和计数器。 CC4027是CMOS双JK触发器,其功能与74LS112相同,但采用上升沿触发,R、S端为高电平

实验六 存储过程和触发器

实验六存储过程与触发器 一、目的与要求 1.掌握编写数据库存储过程的方法。 2.掌握建立数据库触发器的方法,通过实验观察触发器的作用与触发条件设置 等相关操作。 二、实验准备 1.了解编写存储过程与调用的T-SQL语法; 2.了解触发器的作用; 3.了解编写触发器的T-SQL语法。 三、实验内容 (一)存储过程 在studentdb数据库中建立存储过程getPractice,查询指定院系(名称)(作为存储过程的输入参数)中参与“实践”课程学习的所有学生学号、姓名、所学课程编号与课程名称,若院系不存在,返回提示信息。 提示:D_Info表中存储了院系代码D_ID,而St_Info表中学号字段St_ID的前两位与之对应,则D_Info表与St_Info表之间的联系通过这两个字段的运算构成连接条件。 1.分别执行存储过程getPractice,查询“法学院”与“材料科学与工程学院” 的学生中参与“实践”课程的所有学生学号、姓名、所学课程编号与课程名称。 create procedure getPractice @D_Name varchar(30) output as begin if not exists (select * from D_Info where D_Name= @D_Name ) print '对不起,该院系不存在' else select st_info、St_ID,C_Info、C_No,C_Name from s_c_info inner join st_info on st_info、St_ID=s_c_info、st_id inner join C_Info on s_c_info、c_no=C_Info、C_No where st_info、St_ID in ( select St_ID from st_info join D_Info on D_Info、D_ID =left(st_info、St_ID,2) where C_Info、C_Type='实践' and D_Info、D_Name= @D_Name ) end go

数据库原理课程设计报告报告实验创建存储过程与触发器

存储过程与触发器实验日期和时间: 2016 年 5 月13 日、星 期 五第节 实验室:DJ2-信息管理实验室 班级:学号:姓名: 实验环境: 1.硬件:笔记本电脑 2.软件:SQL Server 2012 实验原理: 存储过程概念:存储过程是事先编好的,存储在数据库中的一组被编译了的T-SQL命令集合,这些命令用来完成对数据库的指定操作。存储过程可以接受用户的输入参数、向客户端返回表格或标量结果和消息、调用数据定义语言(DDL)和数据操作语言(DML)语句,然后返回输入参数。 触发器概念:触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 实验任务: 此作业成绩得分根据你完成的任务的难度和数量评分,完成后在实验室给老师演示验收,课后提交电子版报告。如额外完成自拟题目应当事先将所拟题目提交给老师或在报告中明确标注题意。 假定有学校的图书馆管理信息系统,可以用于日常管理书库和同学们的借还书工作。 以下列出参考的库表情况: 根据管理的业务需求来分析,该管理信息系统的数据库应至少包括如下数据表:(打★号的是必须有的表) 1.★图书现有库存表。作用:记录图书的现有库存情况。至少包括:书号、书名、 作者、简介、类别、价格、出版社、出版日期、现有库存数量、最小库存量、库 存总量、库存位置等。 2.★读者信息表。作用:记录读者信息。至少包括:读者编号、证件类型、证件号 码、姓名、性别、职业(可填写教师、学生、教工、其它……)、所属单位、地址、 联系电话等。 3.★借书记录表。作用:记录借书情况,以及是否归还。至少包括:借阅ID(主键, 可设置为自动编号)、书号、读者编号、借阅数量、借阅日期、是否归还、管理员 编号……等。 4.★还书记录表。作用:记录还书情况。至少包括:还书ID(主键,可设置为自动 编号)、书号、读者编号、归还数量、归还日期、是否超期(超过假设45天为超 期)、超期天数、管理员编号……等。(附:为简化操作,续借可视为归还后再借)。 5.管理员信息表。作用:记录负责管理书库和借书还书工作的管理员信息。至少包 括:管理员编号、职工编号(在职工档案表中的职工编号)、用户名、密码、管理

相关文档
最新文档