insert插入触发器
来源:互联网 发布:excel断开数据连接 编辑:程序博客网 时间:2024/06/04 18:01
--测试数据库
use master
go
drop database Bank
go
create database Bank
go
use Bank
go
create table Cards
(
cardNum varchar(19) primary key ,
userName varchar(50) not null,
balance money default(0) check(balance>=0) not null
)
go
create table TransInfo
(
cardNum varchar(19) references Cards(cardNum) not null,
transType varchar(4) check(transType in ('存款','取款')) not null,
transMoney money not null check(transMoney>=0),
transDate datetime default(getdate()) not null
)
go
insert into Cards values('1234 5678 1234 5678','张三',1500)
insert into Cards values('1234 5678 4321 6666','李四',1500)
--首先介绍插入触发器insert
create trigger transInfo_Insert
on TransInfo for insert
as
declare @cardNum varchar(19),
@transType varchar(4),
@transMoney money
select @cardNum=cardNum,@transType=transType,@transMoney=transMoney from inserted--插入临时表,保存当前插入该表的数据
if(@transType='存款')
begin
update Cards set balance=balance+@transMoney where cardNum=@cardNum
end
else
begin
update Cards set balance=balance-@transMoney where cardNum=@cardNum
end
go
--当我们向TransInfo插入数据时,数据库服务器将会自动调用transInfo_Insert触发器并执行。
--触发器的特点:、无法手动调用。、本身就是一个特殊的存储过程并且自身具备一个事务。、如果想插入数据失败,可以使用rollback进行回滚。
--4、该触发器的事务是从启动时开启,结束时自动提交。
insert into TransInfo values('1234 5678 4321 6666','取款',300,default)
insert into TransInfo values('1234 5678 4321 6666','存款',200,default)
--运行完查看结果
select * from transinfo
select * from cards
---------------------------------------------------------------------------------------------
--测试数据库
use master
go
drop database Bank
go
create database Bank
go
use Bank
go
create table Cards
(
cardNum varchar(19) primary key ,
userName varchar(50) not null,
balance money default(0) check(balance>=0) not null
)
go
create table TransInfo
(
cardNum varchar(19) references Cards(cardNum) not null,
transType varchar(4) check(transType in ('存款','取款')) not null,
transMoney money not null check(transMoney>=0),
transDate datetime default(getdate()) not null
)
go
insert into Cards values('1234 5678 1234 5678','张三',1500)
insert into Cards values('1234 5678 4321 6666','李四',1000)
insert into TransInfo values('1234 5678 4321 6666','取款',300,default)
insert into TransInfo values('1234 5678 4321 6666','存款',200,default)
go
--创建删除触发器
create trigger TransInfo_Delete--触发器名称
on TransInfo for delete--on 表名for 触发器类型
as
declare @cardNum varchar(19),
@transType varchar(4),
@transMoney money
if exists(select id from sysobjects where [name]='bak_transinfo')
insert into bak_transinfo select * from deleted
else
select * into bak_transinfo from deleted
go
--在删除触发器中存在的是deleted临时表,当中保存了删除该表的所有数据,直到触发器执行完毕时删除。
--测试操作
delete from transinfo where cardNum='1234 5678 4321 6666'
--运行完查看结果
select * from transinfo
select * from cards
---------------------------------------------------------------------------------------------
--创建update更新触发器
create trigger TransInfo_Update
on TransInfo for update
as
--在更新触发器中存在两张临时表inserted和deleted
--因为在更新操作中,原理也就是将原来的该行数据删除,然后在插入新的行数据
if update(transmoney) --使用update(列名)可以判断指定列是否有进行数据的更新
print '金额更新了!'
else
print '金额没有更新!'
--通过以上的操作可以验证转账金额
go
- insert插入触发器
- insert触发器 同时插入多条记录
- oracle触发器,insert时数据插入另一个表中
- Insert 触发器
- 插入(insert)
- 插入触发器
- Insert , Update , Delete 触发器
- insert 触发器例子
- sqlserver insert 触发器
- mysql insert触发器事例
- 触发器 insert instead of
- insert触发器实例
- ORACLE触发器:在insert之前,判断这条插入语句是否可插入,不可插入时抛异常........
- Mssql触发器学习例子之INSERT触发器
- INSERT触发器的工作过程
- mysql insert与update触发器
- MySQL中的触发器insert、update
- 1, insert触发器; 2, update触发器; 3, delete触发器;
- SQL Server数据库查询性能优化
- 关于QQLHZ.COM空间站开通介绍!
- 求阶乘位40位或者以上的最小的数
- socket编程简记
- Java多线程基础
- insert插入触发器
- 开始→运行(cmd)命令大全
- SQL孤立用户问题
- command pattern
- IBM JDK下访问SSL/HTTPS时候ClassNotFoundException解决方法
- 有关gridview的代码
- 重定向和转发
- 宏定义中双井号的作用及使用
- datagridview的按钮列