数据库实验 创建触发器
发布网友
发布时间:2022-04-23 05:34
我来回答
共1个回答
热心网友
时间:2022-04-11 15:18
先分析一下你所要完成的两个功能:
第一个功能:
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 部门编号,就这么一个意思;此时呢需要声明变量将此最小的部门编号记住,以便使用。
那个将员工转移至某个部门的就不再写了,很简单。
触发器本身就不再写了,再次只给出一个思路,希望有帮助。