触发器
This commit is contained in:
parent
6b3de7ecba
commit
0ecb0c46ff
70
数据库/头歌/触发器的创建和使用/1. 触发器的创建和使用.sh
Normal file
70
数据库/头歌/触发器的创建和使用/1. 触发器的创建和使用.sh
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
USE studentdb
|
||||||
|
go
|
||||||
|
|
||||||
|
SET NOCOUNT ON
|
||||||
|
go
|
||||||
|
--********** create trigger_insert_score **********--
|
||||||
|
--********** Begin **********--
|
||||||
|
CREATE TRIGGER trigger_insert_score
|
||||||
|
ON score
|
||||||
|
INSTEAD OF INSERT
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
IF EXISTS (SELECT * FROM inserted i WHERE NOT EXISTS (SELECT 1 FROM student s WHERE s.sno = i.sno))
|
||||||
|
BEGIN
|
||||||
|
RETURN
|
||||||
|
END
|
||||||
|
INSERT INTO score (sno, cno, grade)
|
||||||
|
SELECT sno, cno, grade FROM inserted
|
||||||
|
END
|
||||||
|
--********** End **********--
|
||||||
|
go
|
||||||
|
delete from score
|
||||||
|
go
|
||||||
|
insert into score values('1001','2001','89.5')
|
||||||
|
go
|
||||||
|
insert into score values('1002','2001','95')
|
||||||
|
go
|
||||||
|
insert into score values('1011','2001','88')
|
||||||
|
go
|
||||||
|
select * from score
|
||||||
|
go
|
||||||
|
|
||||||
|
|
||||||
|
--********** create trigger_delete_student **********--
|
||||||
|
--********** Begin **********--
|
||||||
|
CREATE TRIGGER trigger_delete_student
|
||||||
|
ON student
|
||||||
|
INSTEAD OF DELETE
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM score WHERE sno IN (SELECT sno FROM deleted)
|
||||||
|
DELETE FROM student WHERE sno IN (SELECT sno FROM deleted)
|
||||||
|
END
|
||||||
|
--********** End **********--
|
||||||
|
go
|
||||||
|
delete from student where sno='1001'
|
||||||
|
go
|
||||||
|
select * from student
|
||||||
|
go
|
||||||
|
|
||||||
|
--********** create trigger_protect_grade **********--
|
||||||
|
--********** Begin **********--
|
||||||
|
CREATE TRIGGER trigger_protect_grade
|
||||||
|
ON score
|
||||||
|
FOR UPDATE
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
IF UPDATE(grade)
|
||||||
|
BEGIN
|
||||||
|
ROLLBACK TRANSACTION
|
||||||
|
END
|
||||||
|
END
|
||||||
|
--********** End **********--
|
||||||
|
go
|
||||||
|
delete from score where sno='1001'
|
||||||
|
go
|
||||||
|
select * from score
|
||||||
|
go
|
||||||
|
select * from student
|
||||||
|
go
|
Loading…
x
Reference in New Issue
Block a user