数据库实验 创建触发器

数据库实验 创建触发器,第1张

先分析一下你所要完成的两个功能:

第一个功能:

1)、判断此部门是否有负责的项目

2)、当中需要找到除该部门以外的负责项目最少的部门:需要检索出各部门所负责项目数量,并从中选取出数量最小的部门,最小为零

3)、如果有多个部门负责项目数量相等且数量数字为最小,则选取排序中第一个项目数量最小的部门。

第二个功能:比较简单,只需要一个set语句即可,筛选条件是部门编号=被删除的部门编号

依次将以上各个细节用sql语句实现即可:

1)、判断此部门是否有负责的项目

假设删除的部门编号为:x

declare @num int

select @num=count(*) from project where where 负责部门号='x'

if @num<>0则是由负责项目部,则:select 编号 from project where 负责部门号='x',如果这个集合不为空,就需要用游标加上循环将这些项目部挪到负责项目最少的那个部门下面了。

if @num=0则是没有,则执行第二个功能:将员工移到制定部门。

2)、需要找到负责项目数量最小的那个部门

3)、如果有多个部门负责项目数量相等且数量数字为最小,则选取排序中第一个项目数量最小的部门:select top 1 部门编号,min(数量) from (select 负责部门编号 as 部门编号,count(*) as 数量 from project group by 负责部门编号) group by 部门编号,就这么一个意思;此时呢需要声明变量将此最小的部门编号记住,以便使用。

那个将员工转移至某个部门的就不再写了,很简单。

触发器本身就不再写了,再次只给出一个思路,希望有帮助。

触发器是数据库提供给程序员和数据分析员来保证数据完整性的一种机制,它是一种与数据表事件相关的特殊的存储过程。触发器的执行不是由程序调用,也不需要手工开启,而是由数据表上的事件来触发,当用户对一个数据表进行增、删、改 *** 作时就会激活它执行。

触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。

触发器功能强大,可以轻松可靠地实现许多复杂的功能,但也不能过于依赖触发器,滥用触发器会造成关系数据库及应用程序维护困难,性能、效率低下等问题的产生,在实际问题中,要根据实际需要选择合适的解决方案。触发器是一种特殊的存储过程,在插入、删除、修改特定表中的数据时触发执行,拥有比数据库本身更强大的数据控制能力,其作用有以下四大方面。

1.数据安全数据安全主要是指对信息系统中的业务数据提供一种数据变更的审核机制,当其通过安全策略的审核后,允许用户变更相关数据,否则直接拒绝数据变更的请求。

安全原理:基于数据库的值使用户具有 *** 作数据库的某种权利。

((1)可以基于时间限制用户的 *** 作。例如,不允许下班后和节假日修改数据库数据。

(2)可以基于数据库中的数据限制用户的 *** 作。例如,不允许股票价格的升幅一次超过10%。

2.数据审计数据审计主要是指对数据服务器上的记录进行变更时的一种用户权限的即时审查与用户行为的全方位记录,以便事后对数据变更过程的追溯,保证数据变更的合法性。

审计原理:跟踪用户对数据库的 *** 作。

((1)审计用户 *** 作数据库的语句。

(2)把用户对数据库的更新写入审计表。

3.数据约束数据约束是指对用户的 *** 作行为将导致业务数据与实际情况相悖的行为进行检查约束,而不让其发生,从而保证数据的完整性与一致性。

约束原理:对用户 *** 作与实际逻辑的约束检查。

((1)实现数据完整性检查和约束。例如,回退任何企图买进超过自己资金的货物。

(2)提供可变的缺省值。

4.数据连环更新数据连环更新是指当对数据进行更新 *** 作时,将所有与此数据相关联的数据作联合的更新 *** 作,以保证数据的完整性与一致性。

连环更新原理:对关联数据作联合更新 *** 作。

((1)修改或删除时级联修改或删除其他表中与之匹配的行。

(2)修改或删除时把其他表中与之匹配的行设成NULL值。

(3)修改或删除时把其他表中与之匹配的行级联设成缺省值。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6473999.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-23
下一篇 2023-03-23

发表评论

登录后才能评论

评论列表(0条)

保存