首页 > 其他分享 >存储过程

存储过程

时间:2023-04-24 18:13:53浏览次数:40  
标签:存储 -- age deleted test Tname 过程 id

存储过程,类似于类,但又不太一样

他是把一个或者一组SQL语句只进行一次编译,后储存在服务器的数据库里,之后就可以直接通过调用名字了,执行特定的功能;1、减少了编译SQL的时间,提高了效率和2、代码的复用性和可移植性3、减轻服务器的负担4、可以更有效的管理数据库权限

缺点:专门维护他,占据数据空间

--即时生效,不具备原子性,不像事务,
--创建一个带参数的储存过程
create proc addTest
@Tname nvarchar(50),
@age int
as
begin
--SQL
declare @time datetime--定义变量
select @time=getdate()--赋值
insert into test(Tname,age,datetime)
values (@Tname,@age,@time)
select * from test
end

--调用存储过程
exec addTest 'ty',6



exec selectTest

use TestDB


alter table test
add datetime time

--创建触发器
create trigger trigger_test
on test
for update
as 
declare @id int,@name varchar(50),@age int--定义
select @id=id,@name=Tname,@age=age from deleted 
print '修改前:'+convert(varchar,@id)+','+@name+','+convert(varchar,@age);
select @id=id,@name=Tname,@age=age from inserted
print '修改后:'+convert(varchar,@id)+','+@name+','+convert(varchar,@age);
--没有备份表则创建备份表
--select * into testInfo
--from deleted
--把deleted表里的数据(只有刚刚执行的数据)插入备份表
--insert into testInfo(Tname,age,datetime)select Tname,age,datetime from deleted
delete from test where id=11

--先进行更改操作,触发触发器,触发器进行,把更改前的数据存入deleted,更改后的数据存入inserted
--deleted,inserted,这两个表都是虚拟表,只读,当触发器结束后就这两个表就注销了,最后执行原本的更改操作。
update test set Tname='jhi',age=2
where id=9



alter trigger delete_test
on test
for delete
as
declare @id int,@name varchar(50),@age int
select @id=id,@name=Tname,@age=age from deleted
print('删除:')+convert(varchar,@id)+','+@name+','+convert(varchar,@age)
if(object_id('testBackup','U')is not null)--‘U’对线类型是表
insert into testBackup select 
Tname,age,datetime from deleted--标识列不能显式插入标识列,所以这里不能插入id
else
select id,Tname,age,datetime into testBackup from deleted
print'备份成功!'

delete from test where id=23

 

标签:存储,--,age,deleted,test,Tname,过程,id
From: https://www.cnblogs.com/lin-07/p/17350378.html

相关文章

  • 第四章 存储器管理 4.3 连续分配存储管理方式
    一、单一连续分配  内存分为两个区域:系统区,用户区。  应用程序装入到用户区,可使用用户区全部空间。内存中仅驻留一道用户程序,整个用户区为一个用户独占。二、固定分区分配  1.将内存用户空间划分为若干个固定大小的区域,每个区域称为一个分区,在每个分区中只装入......
  • 纯人工手解jsjiami.v5|jsjiami.v6过程分析记录
    JSJiami.v6是一种JavaScript代码混淆工具,它可以将JavaScript代码转化为难以理解和阅读的形式,从而增强代码的保密性和安全性。在本文中,我们将介绍JSJiami.v6的工作原理,并提供一些实际的案例代码。JSJiami.v6的工作原理JSJiami.v6采用了多种混淆技术,包括代码结构转化、变量重命名、......
  • SpringSecurity从入门到精通:用户密码加密存储&铺垫只是jwt工具类使用
    用户密码加密存储    铺垫只是jwt工具类使用 ......
  • Typecho<=1.2.0 存储型XSS 复现
    Typecho<=1.2.0存储型XSS影响版本漏洞影响版本:Typecho<=1.2.0漏洞复现cookie.js//定义一个全局变量website,值为一个具体的网址varwebsite="http://xss.xxxx.com";//声明并立即执行一个匿名函数(function(){//创建Image对象,并给它的src属性赋值为websi......
  • 大端存储和小端存储异同及优缺点
    大端存储与小端存储(1)定义大端存储与小端存储模式主要指的是数据在计算机中存储的两种字节优先顺序。小端存储指从内存的低地址开始,先存储数据的低序字节再存高序字节;相反,大端存储指从内存的低地址开始,先存储数据的高序字节再存储数据的低序字节。注意事项:每一个字节中......
  • C程序的编译过程
    1,由.c文件到.i文件,这个过程叫预处理 2,由.i文件到.s文件,这个过程叫编译 3,由.s文件到.o文件,这个过程叫汇编 4,由.o文件到可执行文件,这个过程叫链接 【转】(146条消息)C程序的编译过程_c编译.i到.s文件_内存故障检测定位隔离的博客-CSDN博客......
  • 线性SVM决策过程的可视化
    线性SVM决策过程的可视化导入模块fromsklearn.datasetsimportmake_blobsfromsklearn.svmimportSVCimportmatplotlib.pyplotaspltimportnumpyasnp实例化数据集,可视化数据集x,y=make_blobs(n_samples=50,centers=2,random_state=0,cluster_std=0.5)#p......
  • Docker存储
    Docker存储Docker为容器提供了两种存放数据的资源:(1)由storagedriver管理的镜像层和容器层。(2)DataVolume。1.storagedriver容器由最上面一个可写的容器层,以及若干只读的镜像层组成,容器的数据就存放在这些层中。这样的分层结构最大的特性是Copy-on-Write:(1)新数据会直接存放......
  • silicon zigbee下一跳路由选择过程
    1.如果是发送给自己的信息,则调用回环接口发送2.如果自己是enddevice,则把信息发送给父节点3.如果目标节点是我们的子节点,直接转发到子设备(如果子节点是关闭接收的enddevice,则缓存在mac队列里直到子节点下一次轮询消息)4.如果目标节点存在路由表里(路由信息可能来自路由发现或者......
  • centos7中systemd启动过程
    CentOS7的启动过程是由systemd管理的,下面是CentOS7的systemd启动过程:BIOS/UEFI:计算机开机自检(POST)并进行硬件初始化。GRUB2:启动引导程序,加载操作系统内核到内存中。kernel:内核负责初始化系统,并启动systemd守护进程。systemd:系统初始化后,systemd会按照一定......