`

触发器(3)

 
阅读更多

 *  回滚只能回滚到上一步操作。

  *  UPDATE,INSERT,DELELE 这些操作都将建立一个临时库(SQL 2000触发器只有DELETED,INSERTED)存储被操作过的数据。

 

/*触发器实例(3)*/

create trigger grade_update

 

on sc

 

for delete,insert,update

 

as 

declare @sname char(10)

declare @grade smallint

select @sname=sno,@grade=grade from sc where grade>100 or grade<0

if @grade<0

 begin

       update sc set grade=0 where sno=@sname

        print '成绩输入有误!'+@sname+'  成绩置为0'

 end

else if @grade>100

        begin 

               rollback tran

               print '成绩输入有误!'+@sname+'成绩输入无效'

        end

else

        begin

               print'成绩输入有效,已经更新!'

        end

 

 update sc  set grade=-12 where sno='95001' /*看效果*/

 update sc  set grade=120 where sno='95001'

 

/*触发器实例(3)*/

create trigger sexandage1_update

 

on student

 

for delete,insert,update

as 

declare @sssex char(2)

declare @ssage  smallint

select @sssex=ssex,@ssage=sage from student where ssex<>'男' or sage>=25

if @sssex<>'男'

   begin

         update student set ssex='男' where ssex=@sssex

         print '你输入的性别有误!性别'+@sssex+'性别置为男性别'

   end

 

else  if @ssage>=25

         begin

             

         update student set sage=24 where sage=@ssage

         print '你输入的年龄大于24岁!年龄'+@ssage+'年龄置为25岁!'

         end

insert into student ( sno,ssex, sage) values('95029','男',25) /*看效果*/

/*触发器实例(4)*/

create trigger samesno_update

 

on student

 

for delete,insert,update

as

declare @ssno char(5)

declare @num  smallint

select @ssno=sno from inserted where sno=@ssno 

select @num=count(sno) from student where sno=@ssno

 

if @num>=2

       begin 

       delete from student where sno=@ssno

       print 'shurucuo'

       end

 

DBA工作流程:建库-建表-建触发器(delete,insert)-建存储过程-录入数据

 

 

 

 

/*作业的操作*/

/*分离,附加,删除数据库的不同点*/

 

分离:右击已建的数据库选分离数据库

附加:右击数据库目录选附加数据库

 

备份:完全,差异,事物,完全和差异一般共用一个数据库,事物单独用一个数据库,查看备份情况:右击已建的备份作业选查看历史记录

 

还原:必须从设备中添加,数据库名不同用强制还原

 

游标:一个标志,一个游动的过程。

   1,向前游标 

   2,静态游标(可做删,改,查操作)(static)

   3,动态游标 (dynamic)

   4,关键值游标(动静结合)(keyset)

   

 格式:

    declare cur_stu cursor/*建立游标*/

        keyset

        for

        select * from student

    

        open cur_stu /*打开游标*/

       

        fetch next from cur_stu/*使用*/

        fetch prior from cur_stu

        fetch first from cur_stu

        fetch last  from cur_stu

        fetch last  absolute 3 from cur_stu

        fetch last   relative 3 from cur_stu

 

       /*注:absolute :绝对位置

             relative :相对于当前的位置*/

 

        格式: fetch [next/prior/first/last/absolute/relative]

              from 游标名

 

 

/*静态游标例子*/

declare cur_stus cursor

  static

  for

  select * from student

 

 open cur_stus

  delete from student where sno='95009'

  fetch next from cur_stu

  fetch prior from cur_stu

  fetch first from cur_stu

  fetch   absolute 3  from cur_stu

  fetch   relative 3 from cur_stu

 

/*随机抽取两条记录*/

declare stucursss cursor

keyset

for

select * from student

 

open stucursss

 

create proc ppppp

as

declare @ppppp smallint

set @ppppp=floor (rand()*5)-1

print 'first rand'

 

fetch absolute @ppppp from stucursss

set  @ppppp=floor (rand() *5)-1

print 'second rand'

fetch absolute @ppppp from stucursss

 

 

ppppp

 

 

 

ppppp /*调用pp过程*/

close stucur /*关闭游标*/

deallocate  游标名 /*删除游标*/

 

 

 

设置access数据库密码:"工具"/"安全"/"设置数据库密码"

撤消access数据库密码:

(1)"文件"/"打开"单击已经建立的*.mdb数据库文件,在右下角"打开"中选择以独占方式打开。

(2)"工具"/"安全"/"撤消数据库密码"

 

分享到:
评论

相关推荐

    第17章_触发器3

    - **示例3**:可以创建一个名为`salary_check_trigger`的触发器,用于在`employees`表上监视INSERT事件,以执行薪资检查或更新相关记录的其他业务规则。 4. **使用场景** - 数据一致性:如商品信息和库存信息的...

    SQLServer触发器语法.pdf

    3. FOR 触发器:相当于 AFTER 触发器,但可以选择是否指定触发器所有者名称。 三、触发器的执行顺序 触发器的执行顺序如下所示: 1. 级联操作和约束检查 2. AFTER 触发器 3. INSTEAD OF 触发器 四、触发器的使用...

    SQL_Server触发器创建、删除、修改、查看示例

    5. **订单插入触发器 3**:检查订单中的商品是否存在于商品表中。 ```sql CREATE TRIGGER orderinsert3 ON Orders AFTER INSERT AS BEGIN IF (SELECT COUNT(*) FROM Goods, Inserted WHERE Goods.Name = Inserted....

    Multisim仿真实验三 触发器_触发器_multisimd触发器_serviceq66_T触发器仿真_double34t_源

    本实验的主题围绕着“Multisim仿真实验三 触发器”,主要关注触发器的逻辑功能、触发器之间的转换以及如何利用JK触发器构建双向时钟脉冲电路。下面我们将详细探讨这些知识点。 首先,触发器是数字电路中的基本存储...

    RS触发器与SR触发器区别有哪些

    RS触发器和SR触发器是数字电路中常见的基本逻辑门,它们都是利用电子开关实现的信号存储电路,但它们之间存在一些基本的差异。理解这两者的区别,对于学习数字逻辑电路设计和分析是非常重要的。 RS触发器,全称为...

    mysql触发器之创建多个触发器操作实例分析

    本文实例讲述了mysql触发器之创建多个触发器操作。分享给大家供大家参考,具体如下: 这次记录的内容mysql 版本必须得是5.7.2+的哈,之前的会不好使的。废话不多说,咱们开始正文哈。 在mysql 5.7.2+版本之前,我们...

    jk触发器波形图怎么画?主从jk触发器波形图

    具体操作时,可以将步骤2和步骤3结合起来进行,这样可以更高效地推导出触发器的状态变化。在画波形图时,要注意时钟信号CP的脉冲、J和K输入的逻辑电平,以及主从触发器的输出Qn和Qn+1的变化。JK触发器的特性是在时钟...

    JK触发器及D触发器构成计数型触发器

    基于Multisim14,绘制的JK触发器及D触发器构成计数型触发器仿真.

    触发器实验报告.doc

    实验3主要探讨了四种类型的触发器:基本RS触发器、JK触发器、D触发器以及触发器间的相互转换。触发器作为基础的存储元件,其核心特性在于它们能维持两种稳定状态,代表二进制的0和1,并在特定条件下能够从一种状态...

    触发器触发器触发器触发器

    3. **DELETE触发器**:在数据行被删除时,这种触发器会被调用。 4. **INSTEAD OF触发器**:与前三者不同,这种触发器可以在DML(数据操纵语言)操作发生之前或之后替代实际的操作,允许对操作进行自定义处理。 5. **...

    mysql触发器之触发器的增删改查操作示例

    MySQL触发器是数据库管理系统提供的一种机制,用于在特定的数据操作(如INSERT、UPDATE、DELETE)发生之前或之后自动执行预定义的SQL语句。这些触发器可以用来实现复杂的业务规则,确保数据的一致性和完整性,或者...

    oracle_触发器的种类和触发事件

    触发器可以分为四种类型:DML触发器、DDL触发器、替代触发器和数据库事件触发器。 DML触发器是定义在表上的触发器,由DML事件引发。DML事件包括INSERT、UPDATE和DELETE三种。DML触发器可以在 BEFORE 或 AFTER 触发...

    触发器-K3wise出入库单据时间限制.sql

    触发器-K3wise出入库单据时间限制,限制K3出入库单据的制单时间范围。

    RS触发器和SR触发器的区别

    RS触发器(Reset-Set Flip-Flop)和SR触发器(Set-Reset Flip-Flop)是数字电子学中非常基础的逻辑电路组件,它们属于触发器的一种类型。触发器是一种双稳态的存储设备,能够存储一位二进制数(0或1),并且在输入...

    D触发器原理-D触发器电路图

    边沿 D 触发器的建立时间、保持时间和传输延迟时间分别为 tset≥2tpd、tHL≥tpd 和 tPHL=3tpd、tPLH=2tpd。 在实际应用中,边沿 D 触发器具有更强的抗干扰能力和更高的工作速度。它广泛应用于数字电子系统中,例如...

    触发器分析应用实验报告

    3. D触发器: D触发器(Data或Delay触发器)仅在时钟上升沿改变其输出,根据D输入的值来更新Q。在VHDL描述中,`if(clk'event and clk='1') then q;`这一段代码明确了这一点。D触发器常用于数据的同步传输和存储。 4...

    调试oracle触发器方法

    3. **触发器调试技巧**: - 使用`DBMS_OUTPUT.PUT_LINE`:在触发器中插入`DBMS_OUTPUT.PUT_LINE`语句,可以打印出关键变量或条件的值,有助于理解代码的执行流程。 - 检查会话设置:确保`SET SERVEROUTPUT ON`已...

    Quartus 2 RS、D、JK、T、触发器实验报告 D触发器构成二分频、四分频电路

    3. **J、K触发器**: J、K触发器与D触发器类似,但提供了更多的功能。J和K输入可以分别控制触发器的翻转或置位/复位操作。当J=K=0时,触发器保持当前状态;J=K=1时,触发器翻转状态;J=0,K=1或J=1,K=0时,触发器...

Global site tag (gtag.js) - Google Analytics