*设计一个触发器,当删除Employees中的某个雇员时,删除Orders表中的与这个雇员*/
/*相关的一切记录。*/
/*********** 第一步、创建存储过程 ***********/
drop Trigger Employees_Delete
go
Create Trigger Employees_Delete
On Employees
INSTEAD OF Delete --此处必须用INSTEAD OF如果采用For 或UPDATE模式,系统会报错,详见SQL参考
As
Begin
--删除雇员前必须先删除参照该雇员的所有关系里的纪录
--1、先删除订单明细表里,该雇员所下订单的明细
Delete [Order Details] From Orders Inner Join Deleted On Orders.EmployeeId=Deleted.EmployeeId
where Orders.OrderID=[Order Details].OrderID
--2、再删除订单表里,该雇员所下的订单
Delete Orders From Deleted
where Orders.EmployeeId=Deleted.EmployeeId
--3、删除EmployeeTerritories表里该雇员的信息
Delete EmployeeTerritories From Deleted
where EmployeeTerritories.EmployeeId=Deleted.EmployeeId
--4、删除雇员表里该雇员的信息,由于前面使用的是INSTEAD OF模式,此处必须有,否则雇员表里的数据没有被删除
Delete Employees From Deleted
where Employees.EmployeeId=Deleted.EmployeeId
End
Go
/*********** 第二步、执行删除操作,比较删除前后各表记录数的变化 ***********/
--1、查看删除数据前各表的记录数
select count(*) from Employees
select count(*) from EmployeeTerritories
select count(*) from Orders
select count(*) from [Order Details]
--2、执行删除9号雇员的命令
delete Employees where EmployeeId =9
--3、查看删除数据前各表的记录数
select count(*) from Employees
select count(*) from EmployeeTerritories
select count(*) from Orders
select count(*) from [Order Details]
分享到:
相关推荐
本文将详细介绍如何在DB2数据库中创建一个触发器,以及触发器的工作原理和实际应用场景。 ### DB2触发器简介 DB2(IBM DB2 Universal Database)是一款高性能的关系型数据库管理系统,广泛应用于企业级数据处理...
【例】 创建一个触发器,当修改Sell表中订购册数时,如果修改后的订购册数小于5本,则触发器将该对应的折扣修改为1,否则,折扣修改为0.8。 DELIMITER $$ CREATE TRIGGER sell_update BEFORE UPDATE ON Sell FOR EACH...
在mysql 5.7.2+版本之前,我们只能为表中的事件创建一个触发器,例如,只能为BEFORE UPDATE或AFTER UPDATE事件创建一个触发器。 mysql 5.7.2+版本解决了这样限制,并允许我们为表中的相同事件和动作时间创建多个...
41.构造一个触发器audit_log.md
3.一个触发器可以记忆 位二进制代码,四个触发器可以记忆 位二进制代码。 4.为了实现高的频率稳定度,常采用 振荡器; 5. 有一个512×8位的RAM,该RAM的地址端数为 ,每次访问 个存储单元。 得分 阅卷人 二....
每个触发器的输出作为下一个触发器的时钟输入,这样通过级联效应,整个系统就能实现七进制计数。 为了实现自启动,我们还需要在计数器达到最大值(110,七进制6)后让它能够返回到最小值(00,七进制0)。这可以...
1. 创建 BEFORE INSERT、AFTER UPDATE 和 AFTER DELETE 三个触发器,名称分别为Tproduct_bf_insert、Tproduct_af_update 和 Tproduct_af_del。 2. 对 product 表分别执行 INSERT、UPDATE 和 DELETE 操作,并查看 ...
SQL Server中的触发器是数据库设计中的一个重要组成部分,用于在数据发生变化时执行特定的逻辑操作,以确保业务规则和数据完整性。触发器分为两种类型:DML(Data Manipulation Language)触发器和DDL(Data ...
由于触发器中的所有语句会作为一个单元执行,因此应保持触发器的简洁性,避免长时间运行,以提高系统性能。 7. **示例:自动编号功能**: 在这个例子中,我们创建了两个表,testAccount(客户表)和testProject...
例如,尝试为一个学生添加第四门课程,此时触发器应该阻止这种操作,并返回错误消息:“操作错误:每个学生最多只能选择3门课程!”如果一切正常,则证明触发器已经正确地发挥了作用。 ### 五、注意事项 - 在实际...
这样,每个JK触发器的计数状态变化都会触发下一个触发器,从而实现从0000到1111的二进制计数,即十进制的0到15。 在实际的设计过程中,我们需要设定合适的时钟信号和控制信号,以确保计数器按照预期的顺序计数。...
例如,创建一个Before INSERT触发器,用于验证新记录是否符合年龄限制: ```sql CREATE OR REPLACE TRIGGER age_check_trigger BEFORE INSERT ON employees FOR EACH ROW WHEN (NEW.age ) BEGIN RAISE_APPLICATION...
- 这个触发器实现了SC表与SC_NUMBER表之间的联动更新逻辑。 - 通过`IF INSERTING OR UPDATING`分支实现插入或更新操作时对SC_NUMBER表的更新。 - 通过`IF DELETING`分支实现删除操作时对SC_NUMBER表的更新。 2. ...
第一个触发器`XSCP_TRI`用于在向XSCP表插入或更新记录时,检查记录中的`cpbh`字段值是否存在于CP表中。如果不在,触发器会回滚事务,阻止非法操作。这个触发器使用了`inserted`表,它是SQL Server为存储插入或更新...
例如,一个简单的二进制计数器可以用D触发器连接起来,每个触发器的时钟输入都连接到前一个触发器的输出,形成级联,数据输入根据计数规则设定。 在Vivado环境中,这些Verilog模块可以被综合、布局布线,并最终下载...
创建一个触发器,触发器的语法很长,简化为: CREATE TRIGGER 触发器名 disibledevent=rMode FROM Deleted -- 向日志表中插入一条简单的删除事件日志 INSERT INTO uSysLog (lEvent) VALUES ('用 户 删 除 了 流 水 ...
- 当一个触发器被激活时,系统会创建两个临时表:`INSERTED`和`DELETED`。`INSERTED`表包含所有新插入或更新的行,而`DELETED`表包含旧的或被删除的行。这些表允许在触发器中比较新旧数据,从而实现复杂的业务逻辑...
创建一个触发器,当尝试向`Orders`表中插入一条订单记录时,检查`Goods`表中对应商品的状态是否为“正在整理”(即状态值为1),如果是,则不允许插入订单记录。 ```sql CREATE TRIGGER orderinsert ON orders ...