Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1017|回复: 0

sql server 2005中取得触发器中刚刚插入的记录值

[复制链接]

该用户从未签到

发表于 2011-10-13 17:12:57 | 显示全部楼层 |阅读模式
发器语句中使用了两种特殊的表:deleted   表和   inserted   表   
  Deleted   表用于存储   DELETE   和   UPDATE   语句所影响的行的复本。在执行   DELETE   或   UPDATE   语句时,行从触发器表中删除,并传输到   deleted   表中。Deleted   表和触发器表通常没有相同的行。   
   
  Inserted   表用于存储   INSERT   和   UPDATE   语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到   inserted   表和触发器表中。Inserted   表中的行是触发器表中新行的副本。
select @id = id from inserted
select @id = id from deleted
--创建两张表
CREATE TABLE [dbo].[bb](
[a] [char](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[c] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
CONSTRAINT [PK_bb] PRIMARY KEY CLUSTERED
(
[a] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Student](
[Sno] [char](5) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Sname] [char](20) COLLATE Chinese_PRC_CI_AS NULL,
[Ssex] [char](1) COLLATE Chinese_PRC_CI_AS NULL,
[Sage] [int] NULL,
[Sdept] [char](15) COLLATE Chinese_PRC_CI_AS NULL,
[spic] [image] NULL,
CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED
(
[Sno] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY],
UNIQUE NONCLUSTERED
(
[Sname] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY],
UNIQUE NONCLUSTERED
(
[Sno] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
--创建触发器
1. 创建插入触发器
create TRIGGER [trstudent4]
ON [dbo].[Student]
after INSERT
AS
declare @sno char(10)
begin
  select @sno = sno from inserted
  insert into bb(a) values(@sno)
end
2.创建删除触发器
create TRIGGER [trstudent5]
ON [dbo].[Student]
after delete
AS
declare @sno char(10)
begin
  select @sno = sno from deleted
  insert into bb(a) values(@sno)
end
3.创建更新触发器
create TRIGGER [trstudent6]
ON [dbo].[Student]
after update
AS
declare @sno char(10)
begin
  select @sno = sno from inserted
  if @sno != null
  begin
  insert into bb(a) values(@sno)
  end
end
4.创建更新触发器
create TRIGGER [trstudent7]
ON [dbo].[Student]
after update
AS
declare @sno char(10)
begin
  select @sno = sno from deleted
  if @sno != null
  begin
  insert into bb(a) values(@sno)
  end
end
其中3与4的功能是一样的.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-22 06:26 , Processed in 0.355539 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表