内容发布更新时间 : 2024/12/25 9:40:25星期一 下面是文章的全部内容请认真阅读。
3。用户不能直接操作2个表
4。delete触发器将删除的内容放在deleted表中。 insert触发器将添加的内容存在inserted表中。
update触发器将替换前的内容放在deleted表中,将替换后的新内容放在inserted表中。 创建触发器:
CREATE TRIGGER 触发器名 ON 表名/视图名 FOR 触发器类型 AS
??T-SQL语句 例如:
/*如果被删除的学生有考试成绩的话,就不允许删除这个学生*/ create trigger t_stu on tbl_stu for delete as begin
declare @id int
select @id = stuid from deleted
if exists(select * from tbl_cj where stuid = @id) begin
print '学生有成绩,不可删除!!' rollback transaction end
end
delete tbl_stu where stuid = 1007—当删除时,看消息框提示 删除触发器:drop trigger 触发器名 例如:drop trigger t_stu
修改触发器:将创建触发器的create关键字更换成alter
存储过程
存储过程:是存储在sqlserver服务器中的一组预编译过的t-sql语句,当第一次调用后,就驻留在内存中,以后调用时不必再进行编译。优点在于一次编写,多次调用。调用过程在服务器端执行,执行速度快。 存储过程分为:系统存储过程,本地存储过程。 存储过程语法:
create procedure 存储过程名 @参数 参数类型 as
任意数量的T-SQL语句 例如:
create procedure stu_name @stuname char(10) as
select * from stu
调用存储过程 exec 存储过程名 参数 例如:exec stu_name 'aa'
事务
--显示事务 Create table aaa (
Aid int , Aname char(10),
Asex char(2) check(asex in (‘m’,’n’)) )
Set xact_abort on Begin transaction
Intsert into aaa values(101,’aa’,’n’) Intsert into aaa values(102,’bb’,’m’) Intsert into aaa values(103,’cc’,’n’) Intsert into aaa values(104,’dd’,’a’) Intsert into aaa values(105,’ee’,’m’) If @@error = 0 Commit Else Rollback Go
Select * from aaa Drop table aaa
--隐性事务 Set xact_abort on
Set implicit_transactions on Create table aaa (
Aid int , Aname char(10),
Asex char(2) check(asex in (‘m’,’n’)) )
Intsert into aaa values(101,’aa’,’n’) Intsert into aaa values(102,’bb’,’m’) Intsert into aaa values(103,’cc’,’n’) Intsert into aaa values(104,’dd’,’a’) Intsert into aaa values(105,’ee’,’m’) Commit --默认提交事务 Create table aaa (
Aid int,
Aname char (10),
Asex char (2) check (asex in (‘m’,’n’))
)
Intsert into aaa values(101,’aa’,’n’) Intsert into aaa values(102,’bb’,’m’) Intsert into aaa values(103,’cc’,’n’) Intsert into aaa values(104,’dd’,’a’) Intsert into aaa values(105,’ee’,’m’)
/*------------------------------------------------------------------- Commit :提交事务中的一切操作,使得事务对数据库的修改有效 Rollback:回滚事务中的一切操作,使得事务对数据库的操作无效
--------------- --------------------------------------------------- 事务控制语句 1.
设置隐性事务模式
set implicit_transactions on启动隐性事务模式 set implicit_transactions off 关闭隐性事务模式
1) 2) 2.
设置自动回滚模式
set xact_abort on 当事务中任意一条语句产生运行时错误,整个事物将
1)
中止,并整体回滚。 2)
set xact_abort off 当事务中语句产生运行时错误,将中止本条语句并
且回滚本条语句。
注意:set xact_abort 的设置是在执行或运行时设置,而不是在分析时设置。