2018-01-19Sql Server-触发器

Posted Int

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-01-19Sql Server-触发器相关的知识,希望对你有一定的参考价值。

 1 --create table users--创建用户表
 2 --(
 3 --    ids int primary key identity(1,1),
 4 --    name nvarchar(200),--姓名
 5 --    class nvarchar(200)--班级编号
 6 --)
 7 
 8 --create table class--创建班级表
 9 --(
10 --    classCode nvarchar(200) primary key,--班级编号
11 --    className nvarchar(200),--班级名字
12 --)
13 
14 ----插入班级表数据
15 --insert into class values(‘c001‘,‘一班‘);
16 --insert into class values(‘c002‘,‘二班‘);
17 --insert into class values(‘c003‘,‘三班‘);
18 --insert into class values(‘c004‘,‘四班‘);
19 --insert into class values(‘c005‘,‘五班‘);
20 ----插入用户表数据
21 --insert into users values(‘张一‘,‘c001‘);
22 --insert into users values(‘张二‘,‘c002‘);
23 --insert into users values(‘张三‘,‘c003‘);
24 --insert into users values(‘张四‘,‘c004‘);
25 --insert into users values(‘张五‘,‘c005‘);
26 
27 --select * from users;
28 --select * from class;
29 
30 ----触发器
31 ----(一个特殊的存储过程,没办法直接调用它,而是通过增删改的动作来触发它
32 ----一个表的一个动作只能有一个触发器)
33 create trigger users_Delete
34 on users
35 for delete--执行delete操作触发,然后执行以下操作
36 as
37 select * from users
38 
39 
40 create trigger users_Insert
41 on users
42 for insert--执行insert操作触发,然后执行一下操作
43 as
44 select * from users
45 
46 create trigger users_Delete
47 on users
48 instead of delete--执行delete操作时,不执行次操作,并用以下操作代替
49 as
50 select * from users
51 
52 create trigger users_Delete
53 on users
54 instead of delete
55 as
56 select * from deleted--查询删除的数据
57 
58 
59 create trigger users_Delete
60 on users
61 instead of delete
62 as
63     declare @a nvarchar(100)
64     select @a=ids from deleted
65     if @a=2
66     begin
67         select 太丑了,不能删!
68     end
69     else
70     begin
71         delete from users where ids=@a
72     end
73     
74 delete from users where ids=2
75 
76 
77 
78 ----级联删除
79 create trigger class_delete
80 on class
81 instead of delete
82 as
83     declare @a nvarchar(200);
84     select @a=classCode from deleted;
85     delete from users where class=@a;
86     delete from class where classCode=@a;
87     
88 delete from class where classcode=c001;

 

以上是关于2018-01-19Sql Server-触发器的主要内容,如果未能解决你的问题,请参考以下文章

转载解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasour(代

SQL server 如何调试触发器!

sql server 触发器一个结果集变化更新到新表

sql server触发器 子查询返回值不止一个 如何解决?

sql server 触发器

SQL Server 触发器