您的位置  首页 >> 师资力量 >> 学在清华 >> 正文
SQL中的触发器学习
[来源:本站 | 作者: 清华IT衡阳校区 | 日期:2014年4月13日 | 浏览2069 次] 字体:[ ]

在 SQL Server 2012 中可以创建 DML、DDL 或登录触发器。 触发器是数据库服务器中发生事件时自动执行的特种存储过程。 DML 事件是针对表或视图的 INSERT、UPDATE 或 DELETE 语句。

下面以常见论坛中用户注册成功时,系统自动发送欢迎消息为例讲解DML触发器的使用实例
--数据表结构
--用户表:(id,loginName,username,pwd,......)
--消息表:(id,toUser,title,body,pubTime)

--创建用户表
create table Users
(
     id int primary key identity(1,1),
     loginName varchar(20) not null,
     username nvarchar(20) not null,
     pwd char(32) not null
)

--创建消息表
create table Msgs
(
     id int primary key identity(1,1),
     ToUser int not null references Users(id),
     title nvarchar(100) not null,
     body nvarchar(1000) not null,
     pubTime datetime default getdate()
)

--创建触发器前往“用户表”中添加一个新用户

insert into Users values('www.hyqhrj.com','衡阳软件教育','3128250');
select * from Users
select * from Msgs

--查看两个表的记录,只有“用户表”中成功添加一条记录



go

--创建触发器
create trigger Users_SendMessage
    on users
    after insert
as
    declare @userId int;
    declare @username nvarchar(20);
    select @userId=id,@username=username from inserted
    insert into msgs (ToUser,title,body)
    values(@userId,'系统消息',concat(@username,':您好!欢迎使用.....'))
go

--创建触发器后,再次尝试往“用户表”中添加一条记录

insert into Users values('hyqhrj','衡阳清华IT','3128250');
select * from Users
select * from Msgs

--查看结果,当成功添加一个用户后,触发器自动执行,会在“消息表”中添加一条发给新用户的欢迎消息


--启用、禁用触发器
disable trigger all on users
go
enable trigger all on users


责任编辑:admin

相关文章

  • ·没有相关文章

相关专题

  • ·专题1信息无
  • ·专题2信息无