公司网站建设素材,顺德建设网站,seo搜索引擎优化知乎,服装商务网站建设策划书CSDN 成就一亿技术人#xff01;
难度指数#xff1a;* *
CSDN 成就一亿技术人#xff01; 目录
1. 存储过程的作用
创建存储过程
2. 触发器
触发器的种类
insert触发器
update触发器
delete触发器
测试
3. 事务
开始事务
提交事务
回滚事务
举个实例 在 SQ…CSDN 成就一亿技术人
难度指数* *
CSDN 成就一亿技术人 目录
1. 存储过程的作用
创建存储过程
2. 触发器
触发器的种类
insert触发器
update触发器
delete触发器
测试
3. 事务
开始事务
提交事务
回滚事务
举个实例 在 SQL Server 中存储过程是一种可重复使用的代码段用于执行特定的任务。存储过程可以接受输入参数并返回输出参数。
1. 存储过程的作用
可用于提高性能、封装业务逻辑、促进代码重用,减少网络流量,提高安全性 防范 SQL 注入攻击简化复杂查询 减轻客户端的负担
详细见下方
提高性能 存储过程通常是预编译的数据库管理系统在首次执行存储过程时会编译它然后将编译结果缓存起来。这种预编译和缓存可以提高执行速度特别是当存储过程被多次调用时。代码重用 存储过程允许将常用的 SQL 逻辑封装在一个单一的单元中从而促进代码重用。多个应用程序或查询可以共享相同的存储过程减少了代码冗余。封装业务逻辑 存储过程允许将复杂的业务逻辑封装在数据库中。这有助于确保逻辑的一致性减少了在多个应用程序中复制和粘贴相同的业务规则的风险。减少网络流量 将逻辑移至数据库中并使用存储过程执行可以减少传递给数据库服务器的查询量。只需传递存储过程的参数而不是每次都传递完整的 SQL 语句。安全性 存储过程可以对外隐藏底层表的结构通过授予对存储过程的执行权限而不是对底层表的直接访问权限可以提高安全性。此外存储过程还可以通过参数化查询来防范 SQL 注入攻击。事务控制 存储过程内的语句可以被包裹在事务中允许更精细的事务控制。这对于确保一系列操作的一致性和原子性非常有用。简化复杂查询 存储过程可以包含复杂的查询和逻辑使得应用程序代码可以更简单更易于维护。这对于处理复杂的数据操作和多步骤的业务逻辑非常有帮助。减轻客户端负担 存储过程的执行发生在数据库服务器上而不是在客户端。这可以减轻客户端的负担特别是在处理大量数据时。
创建存储过程 -- 创建不带参数的存储过程CREATE PROCEDURE cunchu_nameASBEGIN SELECT name, age, sex, FROM 表; END; cunchu_name 是这个存储过程的名称。 调用不带参数的存储过程 EXECUTE cunchu_name; -- 使用 EXECUTE -- 或者EXEC cunchu_name; -- 使用 EXEC -- 创建带参数的存储过程CREATE PROCEDURE cunchu_name age INTASBEGIN SELECT name, age, sex FROM 表 WHERE age age;END; cunchu_name 是这个存储过程的名称。age INT 定义一个age变量 类型为int 调用带参数的存储过程 EXECUTE GetEmployeeByID EmployeeID; -- 使用 EXECUTE -- 或者EXEC GetEmployeeByID EmployeeID; -- 使用 EXEC 2. 触发器
触发器Trigger是一种特殊的存储过程它与表相关联定义了在表上执行的自动化操作。触发器通常在表上的插入、更新或删除操作发生时触发允许在数据发生变化时执行一些自定义的逻辑
触发器的种类
insert触发器当向表中写入数据时触发 自动执行定义的语句
update触发器当更新列 自动执行定义的语句
delete触发器删除某一个信息 自动执行定义的语句
insert触发器 CREATE TRIGGER chufaqi_nameON YourTableNameAFTER INSERTASBEGIN -- 触发器逻辑 PRINT 添加信息成功;END; update触发器 CREATE TRIGGER chufaqi_nameON YourTableNameAFTER UPDATEASBEGIN -- 触发器逻辑 PRINT 添加信息成功;END; delete触发器 CREATE TRIGGER chufaqi_nameON YourTableNameAFTER DELETEASBEGIN -- 触发器逻辑 PRINT 添加信息成功;END; 测试 创建触发器 insert 插入数据 出现提示成功 加入这条命令就是阻止执行三类触发器都可以用
阻止触发事件 3. 事务
特性原子性一致性隔离性持久性
开始事务 BEGIN TRANSACTION; 提交事务 COMMIT TRANSACTION; 回滚事务 ROLLBACK TRANSACTION; 举个实例 begin transaction
declare sum int #定义变量 执行成功为0执行不成功不等于0.
set sum0李四向张三转1000 张三1000 李四—1000
update 表_name set 李四的钱李四的钱-1000
where name李四
set sumsumERROR
update 表_name set 张三的钱张三的钱1000
where name张三set sumrsumerror
print 查看转账事务中的余额
select * from 表_nameif sum0 / sum!0 beginprint 交易失败回滚事务rollback transactionend
elsebeginprint 交易成功 谢谢合作commit transactionend