一、触发器的使用
MySQL的两种触发器:
after 触发器: 对表操作之后触发,定义操作执行之后触发
instead of 触发器: 不执行本身定义的操作,而执行触发器本身里面定义的内容
(1)after 触发器
1.after insert 触发器:在 insert 操作执行之后触发
CREATE/ALTER TRIGGER 触发器名称
ON 表名/视图名
FOR/AFTER INSERT
AS
T-SQL语句
[GO]
2.after update 触发器:在 update 操作之后触发
CREATE/ALTER TRIGGER 触发器名称
ON 表名/视图名
FOR/AFTER UPDATE
AS
T-SQL语句
[GO]
3.after delete 触发器:在 delete 操作之后触发
CREATE/ALTER TRIGGER 触发器名称
ON 表名/视图名
FOR/AFTER DELETE
AS
T-SQL语句
[GO]
(2)instead of 触发器
1.instead of insert 触发器: insert 操作之前触发
CREATE/ALTER TRIGGER 触发器名称
ON 表名/视图名
INSTEAD OF INSERT
AS
T-SQL语句
[GO]
2.instead of update 触发器: update 操作之前触发
CREATE/ALTER TRIGGER 触发器名称
ON 表名/视图名
INSTEAD OF UPDATE
AS
T-SQL语句
[GO]
3.instead of delete 触发器: delete 操作之前触发
CREATE/ALTER TRIGGER 触发器名称
ON 表名/视图名
INSTEAD OF DELETE
AS
T-SQL语句
[GO]
(3)删除触发器
DROP TRIGGER 触发器名
二、索引的使用
(1)视图创建
CREATE VIEW <视图名>[<列名>,<列名>,[]] [括号内可省略]
[WITH ENCRYPTION] 加密[可省略]
AS
<SELECT 语句>
[WITH CHECK OPTION]
(2)索引创建
CREATE [UNIQUE],[CLUSTERED],[NONCLUSTERED] INDEX 索引名
ON {表或视图} {列} {括号内的一定要写}
WITH FILLFACTOR = n 填充因子0到100之间的整数
(3)存储过程创建
CREATE PROC 存储过程名 [可选的整数] 用来对同名的过程分组
[{@参数名称 参数类型} [=DEFAULT] [OUTPUT]]
[WITH {RECOMPILE 或ENCRYPTION 或RECOMPILE ,ENCRYPTION}]
AS
[BEGIN]
<T-SQL语句>
[END]
[GO]
三、游标的使用
---1. 声明游标
DECLARE 游标名 CURSOR LOCAL ---GLOBAL全局游标(默认LOCAL)
FOR select_statement
---查询T-SQL
select 行 from 表 where 条件
---2. 打开游标
OPEN 游标名
---3. 读取游标
NEXT 向下 PRIOR 向上 FIRST 第一个 LAST 最后一个
ABSOLUTE n 绝对位置 RELATIVE n 从当前位置开始到第n个
DECLARE @name varchar(20)
---游标前进赋值 FETCH NEXT
FETCH NEXT FROM @varUser cursor ,@uId int ,@uName varchar(50) ,@age int
SET @varUser = user_cursor(游标名)
WHILE @@FETCH_STATUS = 0 ---判断是否执行成功
BEGIN
print cast(@uId as varchar)+‘,‘+@uName+‘,‘+convert(varchar,@age);
<执行T-SQL语句>
FETCH NEXT FROM 游标名 INTO @uId,@uName,@age --移动游标
END
---4.关闭游标
CLOSE 游标名
---5.释放游标
DEALLOCATE 游标名
GO