一 、實驗題目:觸發器的定義。
二 、實驗目的:熟悉觸發器的定義和使用。
題目六:
藥品(編號,名稱,價格,廠商)
處方(藥品編號,數量,醫生編號)
醫生 (編號,姓名,科室,職稱)
建立藥品的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