存储过程 触发器 约束
定义(定义时不能赋值):declare @名 类型
赋值:set (或select) @名=’需要赋给@名的值’
存储过程:
手动调用
弊端是不容易迁移数据(迁移时迁表,存储时重写)
格式:
create procedure 存储过程名(UP_表名_操作)
行参(传递的行参)
As
Begin
可定义变量(临时用的行参)
语句
End
使用:
存储过程名 行参
例题:
ALTER PROCEDURE [dbo].[BuyFruit]
@username varchar(20),
@fruitname varchar(20),
@buycount int = 0
AS
BEGIN
declare @kc int,@price float,@fruitid varchar(20)
--先把该水果的库存量找出来
select @fruitid=ids, @kc = numbers,@price=price from fruit where name=@fruitname
--根据购买数量和库存的关系,进行购买
if @buycount < @kc
begin
declare @money decimal(18,2)
select @money = account from login where username=@username --根据用户名找到账户余额
if(@money > @price*@buycount)
begin
update login set account=account-@price*@buycount where username=@username
update fruit set numbers = numbers-@buycount where name=@fruitname
declare @ordercode varchar(50)
set @ordercode ='O'+cast(getdate() as varchar(50))
insert into orders values(@ordercode,@username,GETDATE())
insert into orderdetails values(@ordercode,@fruitid,@buycount)
end
else
begin
print '余额不足'
end
end
else
begin
print '库存不足'
end
END
触发器:
可查,可读,不可改
系统自动写,有inserted和deleted两个临时表
Inserted 存放任何更改后的新信息
Deleted存放最后一条的删除信息
在表的 属性里面的 扩展属性里 对表的内容进行说明,达到一看就懂得效果
删除主表时的主键时 ,如果从表中的数据还有与主键相关的值,则不能成功,因为他破坏了引用的完整性。
默认情况下,从表的数据删完才能删主键,
级联:表 设计 左上角 从表的关系 设置级联
格式:
Create trigger 触发器名(UP_表名_操作)
On 表名
For(或insert of) 操作
As
语句
Go
例题:
create trigger TR_STUDENT_DELETE
on student
for delete
as
declare @no varchar(3),@name varchar (4)
select @no=sno ,@name=sname from deteled
insert into biandong values (@no,@name,'100')
go
select * from student
事务:
Begin tran(或transaction)--开始事务
Commit --提交
Rollback --回滚事务
事务特性:A原子性(atomicity)
C一致性(consistency)
I隔离性(isolation)
D持久性(durability)
@@error 是判断事务有没有错的条件 没错时值为0,出错时值不为0
例:
If @@error<>0
Rollback
Else
Commit
例:
Begin tran
Begin try
语句
Commit
End try
Begin catch
Rollback
End catch
了解 悲观锁 和 乐观锁
转载于:https://www.cnblogs.com/wanwuguizong/p/3977527.html
存储过程 触发器 约束相关推荐
- mysql视图存储过程触发器
以下笔记借鉴于黑马MYSQL视频,记录为个人学习笔记参考. 包含视图/存储过程/触发器等概念 目录 视图 view 语法 视图的检查选项 视图更新 作用 存储过程 procedure 语法 变量 系统 ...
- c语言怎么定义存储过程输出的游标,存储过程触发器和游标.ppt
存储过程触发器和游标.ppt 数据库原理与应用教程―SQL Server 第11章存储过程.触发器和游标 引言 在SQL Server 2005应用操作中,存储过程.触发器和游标都扮演着相当重要的角色 ...
- SQL2008--SQL语句-存储过程-触发器-事务处理-基本语法-函数
环境 SQL2008 1.存储过程建立 库-可编程性-存储过程-右击"存储过程"-点击"新建存储过程" SET ANSI_NULLS ON GO SET QUO ...
- mysql 触发器定义变量_MySQL 函数存储过程触发器定义简单示例
1.变量提示 NEW 是新值-- OLD 是旧值 INSERT 只有NEW ----UPDATE有NEW和OLD ---DELETE只有OLD 2.准备测试表(userinfo.userinfolog ...
- 关系数据库——视图/存储过程/触发器
视图 视图是虚拟的表,与包含数据的表不同,视图只包含使用时动态检索数据的查询,主要是用于查询. 为什么使用视图 重用sql语句 简化复杂的sql操作,在编写查询后,可以方便地重用它而不必知道他的基本查 ...
- mysql存储过程触发器游标_MySQL存储过程,触发器,游标
语法: 1.存储过程: create PROCEDURE name(argment_list) begin sql_statement; end 2.触发器: create trigger name ...
- mysql存储过程触发器_MySQL存储过程及触发器
一.存储过程 存储过程的基本格式如下: -- 声明结束符 -- 创建存储过程 DELIMITER $ -- 声明存储过程的结束符 CREATE PROCEDURE pro_test() --存储过程名 ...
- Oracle 查看 表 存储过程 触发器 函数 等对象定义语句的方法
有时候,我们想查看表,存储,触发器等对象的定语语句,有以下两种方法: 1. 查 all_source 表 2. 用 DBMS_METADATA 包. 一. 通过 all_source 表 先来确认下, ...
- MSSQLServer基础07(事务,存储过程,分页的存储过程,触发器)
事务 事务:保证多个操作全部成功,否则全部失败,这处机制就是事务 思考:下了个订单,但是在保存详细信息时出错了,这样可以成功吗? 数据库中的事务:代码全都成功则提交,如果有某一条语句失败则回滚,整体失 ...
最新文章
- HarmonyOS UI 开发 vp ,fp , px 以及写具体数字的 理解
- 音频(3):iPod Library Access Programming Guide:Introduction
- 多视图几何三维重建实战系列- Cascade-MVSNet
- 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)
- 全球及中国特斯拉产业销量预测及投资机遇调研报告2021-2027年
- rust营火为什么放不下去_为什么大蒜头在超市里不发芽,买回家放几天后就发芽了?...
- php从入门到精通+视频,PHP从入门到精通2015版(初级)
- FFmpeg代码导读——HEVC在RTMP中的扩展
- 澳大利亚短租市场火爆 “祖母房”成为热搜
- mysql把字段名批量改为大写_MySQL批量将表名或者列名大小写转换
- 51单片机开发软件keil4的安装(win10)
- 5G的调制方式,到底是怎么实现的?
- “Python小屋”1300篇历史文章分类速查表
- 【总结】EJB开发过程中遇到的几个问题
- win10照片查看器_win10最好的看图软件?win10照片查看软件推荐
- 国庆日快到啦!国庆版头像来了!总有一款适合你!
- 测试分析报告(GB8567——88)基于协同的在线表格forture-sheet
- 百人计划 美术 1.1 美术理论基础
- 关于条件编译和预编译的一点学习心得
- 深度解析粉象生活VS花生日记哪个更好,哪个更有优势更容易赚钱
热门文章
- 华硕z170a如何开启m2_给Z170A 加个M.2 SSD,速度有点意思
- hashset去重原理_9道Java集合面试题,搞定了再去投简历吧!
- python爬虫要不要学正则_Python爬虫入门,如何使用正则表达式
- git分支开发常用命令
- java与php链条遇到的坑,记一次Java加密加签算法到php的坑
- go语言linux下开发工具,LiteIDE 开发工具指南 (Go语言开发工具)
- 今天诛仙3服务器维护么2014年4月27,诛仙2021年3月4日更新维护公告 诛仙2021年3月4日更新维护内容一览_手心游戏...
- mysql创建表时表明加单引号_python在MySQL表名周围插入单引号(‘)
- linux禁止内核抢占,Linux内核态抢占机制分析
- 不会部署并调试SpringBoot源码?一看必会IDEA操作