数据库中触发器、事务
触发器
步骤:打开选用的‘数据库’,然后打开‘可编程性’,就可以找到‘数据库触发器’。
是一种存储过程,只是不通过 exec 调用执行!
通过增删改语句来引发执行!
在有主外键关联时,可以把关联的信息都修改
(有主外键关联时,要先删除外键才可以删主键)
create table new
(code int ,
shu int)
go
insert into new values (1,1)
insert into new values (2,3)
insert into new values (3,4)
insert into new values (4,5)
insert into new values (5,6)
select *from new
drop table new
----------------------------------------------------
create trigger TR_new_Delete --创建并命名触发器
on new --作用于new 表
for delete--delete/insert/update --先执行删除语句,再进行插入语句
as
insert into new values (11,11)--占据删除数据的位置
insert into new values (3,4)--在新插入数据的位置
go –到此,触发器完成。
delete from new where code=3
--引发触发器语句,只能是增删改
select *from new
for/after 先运行go再运行as
--先go删除了code=3,再as添加了code=11,code=3
-- drop trigger TR_new_Delete
--------------------------------------------------
create trigger TR_new_Delete
on new
instead of delete
as
insert into new values (11,11)
go
delete from new where code=2
select * from new
--此时不执行删除语句,只执行插入语句!
instead of只运行as的语句
----------------------------------------------
alter trigger dongtaichufa
on teacher
instead of delete
as
begin
declare @Tno varchar(20)
set @Tno=(select Tno from deleted)
--deleted 表示虚拟表(go后面的delete 语句)
update teacher set Tname='递归'where Tno=@Tno
end
go
delete from teacher where Tno='856'
select *from teacher
---------------------------------------------
--触发器可以处理视图,(用途:1.删除数据时备份2.操作视图,即有主外键关联时)
create trigger inserttt
on teacher
for insert
as
declare @Tno varchar(19)
set @Tno=(select Tno from inserted)
update teacher set Tsex='男'where Tno=@Tno --修改表内容
go
insert into teacher values
('789','集合','女','1990-09-09','教授','生物系')
select *from teacher
----------------------------------------------
alter table teacher disable trigger all--(或触发器名字)禁用全部
alter table teacher enable trigger all--(或触发器名字)启用全部
#########################
事物:
就是把语句‘打包’执行,只要发生错误,全部执行失败!
begin tran --开始‘事务’
--一般对增删改使用‘事物’!查询一般不用’事物’
insert into student values ('910','王五','男','1999-09-09','95033')
if @@ERROR >0--一旦发生错误,执行下面的返回!
goto TranRollback
insert into course values ('3-999','语文','804')
if @@ERROR >0
goto TranRollback
insert into score values ('191','3-105',99)
if @@ERROR >0
begin
TranRollback: rollback tran --返回tran 开始!
end
else
begin
commit tran--确认提交tran 执行语句内容!
end
转载于:https://www.cnblogs.com/huaze/p/4089873.html
数据库中触发器、事务相关推荐
- 数据库中触发器的作用是什么?
数据库中触发器的作用是什么? 什么是触发器 触发器是一种特殊的存储过程,只能由事件驱动调用,而无法直接调用. 触发器有什么用 当对数据库的相关对象(数据库.表.视图)进行某些特定的操作时,数据库会自动 ...
- MySQL数据库中默认事务隔离级别是?
MySQL数据库中默认事务隔离级别是? 事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到 ...
- SQL FILESTREAM数据库中的事务日志备份
In the continuation of our SQL FILESTREAM article series, we'll be covering transaction log backups ...
- MySQL数据库中的事务(四大特性)
1. 事务的介绍 事务就是用户定义的一系列执行SQL语句的操作, 这些操作要么完全地执行,要么完全地都不执行, 它是一个不可分割的工作执行单元. 2. 事务的四大特性 原子性(Atomicity) 一 ...
- 数据库中触发器的作用,规则和限制
触发器--看到这个名字总是会想到数电中学过的触发器,有输入端和输出端,根据电平的高低来触发. 数据库中的触发器是个特殊的存储过程,主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名称而被直 ...
- 数据库中的事务是什么?
事务(transaction)是作为一个单元的一组有序的数据库操作.如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功.如果所有操作完成,事务则提交,其修改将作用于所有其他数 ...
- 听说Mysql你很豪横?-------------深入解析mysql数据库中的事务!
文章目录 一.数据库的三大范式 二.事务(重要) 1.事务的重要性 2.什么是事务 3.事务有什么特点(ACID四个特点) 4.怎么使用事务呢? (1)如何存档 (2)如何回档 (3)如何删档 (4) ...
- MYSQL数据库中触发器禁用、启用、查询
#查询触发器 SELECT * FROM information_schema.`TRIGGERS`#禁用 alter table table_name disable trigger tgr_tab ...
- 同时更改一条数据_数据库中的引擎、事务、锁、MVCC(二)
二.事务 介绍锁之前,咱们先介绍一下 什么叫做事务. 事务就是一组对数据库的一系列的操作,要么同时成功,要么同时失败. 1.事务的特性(ACID): 原子性:事务是整个操作,不可分割,要么都成功,要么 ...
最新文章
- idea本地跑如何看gc日志_不可思议,竟然还有人不会查看GC垃圾回收日志?
- 为什么使用pickle模块
- 学业水平考试b能上985吗_211 和985 的大学是不是要求学业水平考试全部是A
- Mac OS 如何更改文件的默认打开方式
- 爬虫--BeautifulSoup使用
- 浅析局域网聊天软件的能力
- 服务器不能用pe安装win7系统安装,WinPE无法安装win7系统的完美解决方案
- OPNsense用户手册-用户界面
- mysql大于小于索引问题
- word如何将选择题按首字母拼音排序
- 怎样在计算机中找小键盘,笔记本怎么关小键盘【方法步骤】
- 抓紧收藏,9大短视频自媒体工具,帮你快速月入过万,不真人出镜
- Linux中计算特定CPU使用率
- Ceph对象存储的使用
- 201712-4 行车路线 ccf
- CSS3: The missing manual 《css3秘笈》笔记+布局、设计优秀资源整理
- 最大熵模型(maximum entropy model)
- 多线程就一定比单线程快吗?
- 如何用最短的时间理解一项数字技术?推荐这7本最新的白皮书(大数据、云原生、区块链、联邦学习等,附下载)...
- matlab word报告,MATLAB 实验报告