触发器的定义(SQL SERVER 2008)

一 、实验题目:触发器的定义。
二 、实验目的:熟悉触发器的定义和使用。
题目六:
药品(编号,名称,价格,厂商)
处方(药品编号,数量,医生编号)
医生 (编号,姓名,科室,职称)
建立药品的delete 触发器,只有当此药品品没有人买时才可删除,若有处方记录不能删除。

所测试的数据:

INSERT INTO 医生
(编号,姓名,科室,职称)
VALUES
('1001','张三','外科','主刀医师'),
('1002','李四','内科','主任医师'),
('1003','王五','小儿科','主治医师'),
('1004','王二','眼科','主任医师'),
('1005','赵六','妇科','主刀医师'),
('1006','张力','内科','副主任医师'),
('1007','张力','骨科','主刀医师');
select * from 医生

INSERT INTO 药品
(编号,名称,价格,厂商)
VALUES
('2001','板蓝根','28.00','云南制药'),
('2002','益气养血口服液','29.00','北方制药'),
('2003','小儿感冒颗粒','35.00','三九药业'),
('2004','999感冒灵','14.00','三九药业'),
('2005','维C银翘片','25.00','北方制药'),
('2006','珍珠明目滴眼液','19.00','天龙药业');
select * from 药品

INSERT INTO 处方
(药品编号,数量,医生编号)
VALUES
('2001','2','1002'),
('2001','2','1006'),
('2005','2','1006'),
('2006','2','1004'),
('2002','2','1005'),
('2003','2','1003');
select * from 处方

在这里插入图片描述
触发器的定义:

create trigger trgDeleteNullSales
on 药品
for delete
as
if exists(select 编号
 from deleted 
where 编号 in 
(select 药品编号 from 处方)
)
begin
print'不能被删除'
rollback 
end 
发布了42 篇原创文章 · 获赞 30 · 访问量 7192

猜你喜欢

转载自blog.csdn.net/Mr____Cheng/article/details/103762383