insert into grade values('fasdfdssa')
---替换触 发器:本来需要执行某一个操作,结果不做了,使用触 发器中的代码语句块进行替代
if exists(select * from sysobjects where name='tr_grade_insert')
drop trigger tr_grade_insert
go
create trigger tr_grade_insert
on grade instead of insert ---为grade表创建名称为tr_grade_insert的触发器,在执行insert操作之后触发
as
declare @cnt int
set @cnt = (select count(*) from student)
select * ,@cnt from student
select * from grade
go
insert into grade values('aaaaaaaaaaaa')
go
---触 发器的两个临时表:
--inserted: 操作之后的新表:所有新表与原始的物理表没有关系,只与当前操作的数据有关
--deleted:操作之前的旧表:所有新表与原始的物理表没有关系,只与当前操作的数据有关
if exists(select * from sysobjects where name='tr_grade_insert')
drop trigger tr_grade_insert
go
create trigger tr_grade_insert
on grade after insert
as
print '操作之前的表:操作之前,这一条记录还没有插入,所以没有数据'
select * from deleted
print '操作之后的表:已经成功插入一条记录,所有新表中有一条记录'
select * from inserted
go
--测试:
insert into grade values('aaaaa')
if exists(select * from sysobjects where name='tr_grade_update')
drop trigger tr_grade_update
go
create trigger tr_grade_update
on grade after update
as
print '操作之前的表:存储与这个修改操作相关的没有被修改之前的记录'
select * from deleted
print '操作之后的表:存储这个操作相关的被修改之后 记录'
select * from inserted
go
--测试
update grade set classname=classname+'aa' where ClassId>15
if exists(select * from sysobjects where name='tr_grade_delete')
drop trigger tr_grade_delete
go
create trigger tr_grade_delete
on grade after delete
as
print '操作之前的表:存储与这个修改操作相关的没有被删除之前的记录'
select * from deleted
print '操作之后的表:存储这个操作相关的被删除之后 记录--没有记录'
select * from inserted
go
--测试
delete from grade where ClassId>15
20.存储过程
存储过程就相当于c#中的方法
参数,返回值,参数默认值,参数:值的方式调用
在调用的时候有三个对应:类型对应,数量对应,顺序对应。
创建语法:
create proc usp_用户自定义名称
对应方法的形参 --(int age, out string name)
as
对应方法体:创建变量,逻辑语句,增加删除修改和查询..return返回值










