文章目录
编程要求
我们已经为你建好了数据库与数据表,并添加了相应的数据内容。
你只需:
- 补全右侧代码片段中 create trigger_insert_score 下的 Begin-End 区域间的代码,向 score 表建立一个插入触发器。保证向 score 表中插入的学生信息的学号,必须在 student 表中存在;
- 补全右侧代码片段 create trigger_delete_student 下的 Begin-End 区域间的代码,向 student 表插入删除触发器,实现 student 表和 score 表的级联删除;
- 补全右侧代码片段 create trigger_protect_grade 下的 Begin-End 区域间的代码,向 score 表建立触发器,使 grade 列不能手工修改。
表 student 如下所示,其中 birthday 是 date 类型,其余字段均为 varchar 类型。
表 score 如下所示,字段 grade 为 float 类型,其余均为 varchar 类型。
代码块部分为需要填入的答案
USE studentdb
go
SET NOCOUNT ON
go
–********** create proc_student_info –
– Begin **********–
CREATE PROCEDURE proc_student_info
AS
BEGIN
SELECT * frome student
END
–********** End **********–
go
exec proc_student_info
go
–********** create proc_sno –
– Begin **********–
CREATE PROCEDURE proc_student_info
@sno varchar(50)
AS
BEGIN
SELECT * from student where sno=@sno
END
–********** End **********–
go
exec proc_sno ‘1001’
go
–********** create proc_add –
– Begin **********–
CREATE PROCEDURE proc_student_info
@Sno verchar(50),
AS
SELECT @Flag=count(*) FROM Student WHERE Sno=@Sno
IF @Flag=0
BEGIN
INSERT INTO Student
VALUES(@SNO, @Sname,@Ssex, @Sage,@Sdept)
END
–********** End **********–
go
exec proc_add ‘1004’,‘HMM’,‘female’,‘2019-6-2’,‘English’,‘national school’
go
exec proc_student_info
go
–********** create student_del –
– Begin **********–
CREATE PROCEDURE proc_student_info
@Sno verchar(50),
@Count int=0
AS
SELECT @Count=count(*) FROM Student WHERE Sno=@Sno
IF @Count>0
BEGIN
DELETE FROM Student WHERE Sno=@Sno
END
–********** End **********–
go
exec student_del ‘1001’
go
exec proc_student_info
go