加入收藏 | 设为首页 | 会员中心 | 我要投稿 武汉站长网 (https://www.027zz.cn/)- 云连接、智能边缘云、数据快递、云手机、云日志!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

存储过程与触发器

发布时间:2024-03-12 10:51:19 所属栏目:MsSql教程 来源:小林写作
导读:在之前的教程中,我们学习了SQL Server的基础知识以及如何使用SQL Server Management Studio(SSMS)来管理和维护数据库。今天,我们将进一步学习存储过程和触发器这两个重要的数据库对象。
一、存储过程
存储过程
在之前的教程中,我们学习了SQL Server的基础知识以及如何使用SQL Server Management Studio(SSMS)来管理和维护数据库。今天,我们将进一步学习存储过程和触发器这两个重要的数据库对象。
一、存储过程
存储过程是一组预编译的SQL语句,经过执行一次后,将会被存储在数据库中以供重复使用。存储过程可以接受参数、执行特定任务、返回值并可以修改数据库中的数据。
1.1 创建存储过程
使用以下代码创建一个简单的存储过程:
```sql
CREATE PROCEDURE GetEmployee
    @EmployeeId INT,
    @FirstName VARCHAR(50),
    @LastName VARCHAR(50)
AS
BEGIN
    SELECT @FirstName = FirstName, @LastName = LastName
    FROM Employees
    WHERE EmployeeId = @EmployeeId
END
```
这个存储过程名为GetEmployee,接受三个参数:@EmployeeId、@FirstName和@LastName。在存储过程的主体中,我们使用SELECT语句查询Employees表中EmployeeId等于@EmployeeId的记录,并将查询结果赋值给@FirstName和@LastName参数。
1.2 调用存储过程
使用以下代码调用存储过程:
```sql
EXEC GetEmployee @EmployeeId = 1, @FirstName = ?, @LastName = ?
```
在这个例子中,我们将@EmployeeId设置为1,并使用输出参数的方式获取查询结果。执行EXEC命令后,数据库将执行GetEmployee存储过程并返回查询结果。
二、触发器
触发器是一种特殊的存储过程,它与表相关联,当表发生特定事件(如插入、更新或删除)时自动触发执行。触发器可以用于强制业务规则、日志记录以及防止对数据进行不当的修改。
2.1 创建触发器
使用以下代码创建一个简单的触发器:
```sql
CREATE TRIGGER UpdateTotalSalary
ON Employees
AFTER INSERT, UPDATE, DELETE AS
BEGIN
    DECLARE @EmployeeId INT, @NewSalary DECIMAL(10,2)
    IF EXISTS (SELECT * FROM inserted)
    BEGIN
        SET @EmployeeId = (SELECT EmployeeId FROM inserted)
        SET @NewSalary = (SELECT Salary FROM inserted WHERE EmployeeId = @EmployeeId)
        UPDATE TotalSalary SET TotalSalary = TotalSalary + @NewSalary WHERE EmployeeId = @EmployeeId
    END
END;
```
这个触发器名为UpdateTotalSalary,关联了Employees表。当在Employees表上发生插入、更新或删除操作后,该触发器将会被触发。触发器的主体中,我们首先声明了两个变量@EmployeeId和@NewSalary。然后,我们检查是否存在插入的数据行。如果是,我们从插入的数据行中获取EmployeeId和Salary的值,并使用UPDATE语句更新TotalSalary表中相应的TotalSalary值。
 

(编辑:武汉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章