存储过程和触发器的区别
来源:互联网 发布:开淘宝店运费怎么办 编辑:程序博客网 时间:2024/05/18 17:45
存储过程,你调用的时候才会执行
触发器就是你设定了数据库里比如删除,修改,插入时,才会触发
触发器不同于存储过程,触发器主要是通过事件执行触发而被执行的,而存储过程可以通过存储过程名称名字而直接调用。当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,SQLSERVER就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合这些SQL语句所定义的规则。
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
触发器是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如Update、 Insert、 Delete 这些操作时,SQL Server 就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。
存储过程分类:
CREATE
proc search_dwmc
@dwidoldint,
@dwmcresult
varchar
(100)
output
as
declare
@stopint
declare
@result
varchar
(80)
declare
@dwmc
varchar
(80)
declare
@dwidint
set
nocounton
set
@stop=1
set
@dwmc=
""
select
@dwmc = dwmc, @dwid =
convert
(
int
,fjdid)
from
jtdw
where
id = @dwidold
set
@result = rtrim(@dwmc)
if @dwid = 0
set
@stop = 0
while(@stop = 1)
and
(@dwid<>0)
begin
set
@dwidold = @dwid
select
@dwmc = dwmc, @dwid =
convert
(
int
,fjdid)
from
jtdw
where
id = @dwidold
if @@rowcount = 0
set
@dwmc =
""
else
set
@result= @dwmc + @result
if(@dwid = 0)
or
(@@rowcount = 0)
set
@stop = 0
else
continue
end
set
@dwmcresult = rtrim(@result)
使用execpro-
name
[pram1pram2.....]
insert
create
trigger
tri_insert
on
student
for
insert
as
declare
@student_idchar(10)
select
@student_id=s.student_id
from
students
inner
join
insertedion s.student_id=i.student_id
if @student_id=
'0000000001'
begin
raiserror(
'不能插入1的学号!'
,16,8)
rollbacktran
end
go
update
create
trigger
tri_update
on
student
for
update
as
if
update
(student_id)
begin
raiserror(
'学号不能修改!'
,16,8)
rollbacktran
end
go
delete
create
trigger
tri_delete
on
student
for
delete
as
declare
@student_idvarchar(10)
select
@student_id=student_id
from
deleted
if @student_id=
'admin'
begin
raiserror(
'错误'
,16,8)
rollbacktran
end
https://baike.baidu.com/item/%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B/1240317?fr=aladdin
https://zhidao.baidu.com/question/2203404281320501668.html
https://zhidao.baidu.com/question/79534999.html?qbl=relate_question_0&word=%B4%A5%B7%A2%C6%F7%20%BA%CD%B4%E6%B4%A2%B9%FD%B3%CC%B5%C4%C7%F8%B1%F0
https://baike.baidu.com/item/%E8%A7%A6%E5%8F%91%E5%99%A8/16782?fr=aladdin
- 存储过程和触发器的区别
- 存储过程和触发器的区别
- sqlserver存储过程和触发器的区别
- 存储过程和触发器的区别
- 存储过程和触发器的区别
- 存储过程和触发器的区别以及存储过程和函数的区别
- 存储过程和触发器以及自定义函数的区别
- mysql中的触发器和存储过程的区别是什么?
- 触发器与存储过程的区别
- 触发器与存储过程的区别
- 触发器与存储过程的区别
- 触发器与存储过程的区别
- 触发器与存储过程的区别
- 触发器与存储过程的区别
- 存储过程,函数,触发器的区别
- 触发器与存储过程的区别
- 存储过程与触发器的区别
- 数据库存储过程、函数、触发器的区别
- 解决在idea中使用maven插件时出现乱码
- Selenium遇到的问题2 下载了chromedriver,并放在Path目录下,还是显示错误
- java基础——引出方法
- TraceView的使用
- ORACLE实现字段自增
- 存储过程和触发器的区别
- 【bzoj1415】【聪聪和可可】期望dp(记忆化搜索)+最短路
- Java中创建对象的5种方式
- [LeetCode]435. Non-overlapping Intervals
- 1.2 什么是神经网络
- 重载运算符
- 构造数独
- jQuery知识总结
- python 碎碎念