SQL server 笔记9(备份还原触发器事务三范式)
------备份还原 --右键数据库---任务
--备份:在不影响数据库正常运行的情况下,将数据备份到一个.bak结尾的文件夹
--还原:将bak文件还原到数据库
-----分离、附加
--分离:将数据库与数据库服务进行分离
--附加:将数据库mdf文件,附加到数据库服务上
--触发器:一种特殊的存储过程 特殊的地方在于,触发器是通过对数据库表的操作来引发 触发的动作只有‘增删改’
--存储过程是通过exec人为执行
create trigger student_insert --创建触发器
on student --指定触发器所在的表
for insert --当执行insert的操作时,自动的触发触发器,for和alter都是在操作后执行,也可以改成alter
as
update student set ssex='女' where sno=103
go
select*from student
create trigger student_delete
on student
instead of delete --替换某个操作,用触发器的过程来替换删除的操作,不再能够删除student表数据
as
update student set sbirthday='2015-4-29' where sno=105
go
delete from student
--create trigger 触发器名
--on 表名
--(for/alter/instead of)+动作(insert/delete/update/)
--as
-- 存储过程内容
--go
--for/alter 先执行操作,再触发触发器
--instead of 直接替换操作
--drop trigger 触发器名 删除触发器
--触发器中的临时表:deleted,inserted
create trigger course_delete
on course
instead of delete
as
select *from deleted
go
delete from course
--deleted是一个临时表,里面存储着你要删除的那些数据
create trigger course_delete
on course
instead of delete
as
delete from score where cno in(select cno from deleted)
delete from course where cno in(select cno from deleted)
go
--删除前先备份数据到备份表之后再删除
--事务:保障整个流程的完整执行,全部没有问题,统一提交,一旦有问题回到原点
begin tran --事物开始
--开始写流程语句
--语句写完之后
if @@ERROR>0 --@@ERROR存储语句中的错误编号,没有错误是0
rollback tran--回滚事物
else
commit tran--提交事物
-----数据库设计三范式
--1.每一列里面的值都是单一的
--2.满足1,每个表都要有主键
--3.满足2,外键表中只出现主键表中的主键列,其他列不要出现。当一个表中出现了三列及以上的数据经常出现重复时,就需要把这些列拿出来单独建一个表
--设一个主键,然后在原来表中只出现主键就可以了