根据数据库系统概论的知识,编写一段代码,代码主题为存储过程(函数)与触发器。要点:存储过程(函数)概念、定义与调用;触发器概念与定义 范围:主要参见第8章(8.3)、第5章(5.7)。
时间: 2024-02-24 17:53:20 浏览: 17
好的,为您提供一个简单的存储过程和触发器代码示例:
存储过程:
概念:存储过程是一组预定义的 SQL 语句,可以接收输入参数,执行特定任务,并返回输出参数,可以减少客户端和服务器之间的通信。
定义:
```
CREATE PROCEDURE get_student_info
@StudentID INT
AS
BEGIN
SELECT * FROM Student WHERE StudentID = @StudentID
END
```
调用:
```
EXEC get_student_info @StudentID = 1
```
以上代码创建了一个名为 get_student_info 的存储过程,可以接收一个名为 @StudentID 的输入参数,并在 Student 表中查找匹配的行。然后可以通过 EXEC 执行该存储过程。
触发器:
概念:触发器是一种特殊类型的存储过程,它在插入、更新或删除表中的数据时自动执行。
定义:
```
CREATE TRIGGER update_student_count
ON Course
AFTER INSERT, DELETE
AS
BEGIN
UPDATE Department
SET StudentCount = StudentCount + (SELECT COUNT(*) FROM Student WHERE DepartmentID = INSERTED.DepartmentID)
FROM Department
INNER JOIN INSERTED ON Department.DepartmentID = INSERTED.DepartmentID
END
```
以上代码创建了一个名为 update_student_count 的触发器,在插入或删除 Course 表中的数据后自动执行。它将更新 Department 表中与插入或删除操作相关的部门的学生人数,通过 INNER JOIN 连接 INSERTED 表和 Department 表,并使用 UPDATE 语句更新数据。
需要注意的是,触发器可以在表中的任何更改操作之前或之后执行,并且可以用于强制执行复杂的业务逻辑和数据完整性约束。