定义(定义时不能赋值):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

存储过程 触发器 约束相关推荐

  1. mysql视图存储过程触发器

    以下笔记借鉴于黑马MYSQL视频,记录为个人学习笔记参考. 包含视图/存储过程/触发器等概念 目录 视图 view 语法 视图的检查选项 视图更新 作用 存储过程 procedure 语法 变量 系统 ...

  2. c语言怎么定义存储过程输出的游标,存储过程触发器和游标.ppt

    存储过程触发器和游标.ppt 数据库原理与应用教程―SQL Server 第11章存储过程.触发器和游标 引言 在SQL Server 2005应用操作中,存储过程.触发器和游标都扮演着相当重要的角色 ...

  3. SQL2008--SQL语句-存储过程-触发器-事务处理-基本语法-函数

    环境 SQL2008 1.存储过程建立 库-可编程性-存储过程-右击"存储过程"-点击"新建存储过程" SET ANSI_NULLS ON GO SET QUO ...

  4. mysql 触发器定义变量_MySQL 函数存储过程触发器定义简单示例

    1.变量提示 NEW 是新值-- OLD 是旧值 INSERT 只有NEW ----UPDATE有NEW和OLD ---DELETE只有OLD 2.准备测试表(userinfo.userinfolog ...

  5. 关系数据库——视图/存储过程/触发器

    视图 视图是虚拟的表,与包含数据的表不同,视图只包含使用时动态检索数据的查询,主要是用于查询. 为什么使用视图 重用sql语句 简化复杂的sql操作,在编写查询后,可以方便地重用它而不必知道他的基本查 ...

  6. mysql存储过程触发器游标_MySQL存储过程,触发器,游标

    语法: 1.存储过程: create PROCEDURE name(argment_list) begin sql_statement; end 2.触发器: create trigger name ...

  7. mysql存储过程触发器_MySQL存储过程及触发器

    一.存储过程 存储过程的基本格式如下: -- 声明结束符 -- 创建存储过程 DELIMITER $ -- 声明存储过程的结束符 CREATE PROCEDURE pro_test() --存储过程名 ...

  8. Oracle 查看 表 存储过程 触发器 函数 等对象定义语句的方法

    有时候,我们想查看表,存储,触发器等对象的定语语句,有以下两种方法: 1. 查 all_source 表 2. 用 DBMS_METADATA 包. 一. 通过 all_source 表 先来确认下, ...

  9. MSSQLServer基础07(事务,存储过程,分页的存储过程,触发器)

    事务 事务:保证多个操作全部成功,否则全部失败,这处机制就是事务 思考:下了个订单,但是在保存详细信息时出错了,这样可以成功吗? 数据库中的事务:代码全都成功则提交,如果有某一条语句失败则回滚,整体失 ...

最新文章

  1. HarmonyOS UI 开发 vp ,fp , px 以及写具体数字的 理解
  2. 音频(3):iPod Library Access Programming Guide:Introduction
  3. 多视图几何三维重建实战系列- Cascade-MVSNet
  4. 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)
  5. 全球及中国特斯拉产业销量预测及投资机遇调研报告2021-2027年
  6. rust营火为什么放不下去_为什么大蒜头在超市里不发芽,买回家放几天后就发芽了?...
  7. php从入门到精通+视频,PHP从入门到精通2015版(初级)
  8. FFmpeg代码导读——HEVC在RTMP中的扩展
  9. 澳大利亚短租市场火爆 “祖母房”成为热搜
  10. mysql把字段名批量改为大写_MySQL批量将表名或者列名大小写转换
  11. 51单片机开发软件keil4的安装(win10)
  12. 5G的调制方式,到底是怎么实现的?
  13. “Python小屋”1300篇历史文章分类速查表
  14. 【总结】EJB开发过程中遇到的几个问题
  15. win10照片查看器_win10最好的看图软件?win10照片查看软件推荐
  16. 国庆日快到啦!国庆版头像来了!总有一款适合你!
  17. 测试分析报告(GB8567——88)基于协同的在线表格forture-sheet
  18. 百人计划 美术 1.1 美术理论基础
  19. 关于条件编译和预编译的一点学习心得
  20. 深度解析粉象生活VS花生日记哪个更好,哪个更有优势更容易赚钱

热门文章

  1. 华硕z170a如何开启m2_给Z170A 加个M.2 SSD,速度有点意思
  2. hashset去重原理_9道Java集合面试题,搞定了再去投简历吧!
  3. python爬虫要不要学正则_Python爬虫入门,如何使用正则表达式
  4. git分支开发常用命令
  5. java与php链条遇到的坑,记一次Java加密加签算法到php的坑
  6. go语言linux下开发工具,LiteIDE 开发工具指南 (Go语言开发工具)
  7. 今天诛仙3服务器维护么2014年4月27,诛仙2021年3月4日更新维护公告 诛仙2021年3月4日更新维护内容一览_手心游戏...
  8. mysql创建表时表明加单引号_python在MySQL表名周围插入单引号(‘)
  9. linux禁止内核抢占,Linux内核态抢占机制分析
  10. 不会部署并调试SpringBoot源码?一看必会IDEA操作