SQL Server 2005 返回修改后的数据

编程之家收集整理的这篇文章主要介绍了SQL Server 2005 返回修改后的数据编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  今天在公司看到同事写了个sql2005的新特性的文章,觉得很实用,在这里和大家分享下。原著作权不属于我。

  这种技术主要是用到了inserted和deleted虚拟表,这两张表相信大家都很熟悉。以前我们主要是在触发器中使用。

  我们先来复习下这两个表:

  Inserted和Deleted这两个表是逻辑表,并且这两个表是由系统管理的,存储在内存中,不是存储在数据库中,因此,不允许用户直接对其修改
这两个表的结构与被该触发器作用的表在相同的表结构。这两个表是动态驻留在内存中的,当触发器工作完成,它们也被删除

  接下来,看看我们的事例,其实使用起来很简单,但也很实用。他除了用上面的两张表外,还使用了output参数。

  创建表:

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TestTB]') AND type in (N'U'))
DROP TABLE TestTB
CREATE TABLE TestTB(
[id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
Province [varchar](50) NULL,
City [varchar](50) NULL
)

1、插入数据,并返回插入的数据:

INSERT INTO TestTB(Province,City)
output inserted.Province,inserted.City
VALUES('广东','深圳')

返回的结果:

2、同理,删除数据也是一样的,只不过是使用deleted表罢了。

delete from TestTB
output deleted.*
where id=1

返回结果:

3、两个结合一起:返回更新前和更新后的数据:

UPDATE TestTB SET Province = '湖南',City='郴州'
OUTPUT '我来自(更新前)'+ DELETED.Province+DELETED.City as [Before],'我来自(更新后)' + Inserted.Province+Inserted.City as [After]
WHERE id=1

返回结果:

4、还可以将返回的结果保存在表变量中,这在删除数据,并把删除的数据插入到历史表时很实用

DECLARE @tempTable TABLE(
id int,
Province varchar(50),
City varchar(50)
)
DELETE FROM TestTB OUTPUT deleted.* INTO @tempTable
WHERE id > 4

SELECT * FROM @tempTable

希望大家灵活应该!

作者博客:http://www.cnblogs.com/liuxinhuahao/

总结

以上是编程之家为你收集整理的SQL Server 2005 返回修改后的数据全部内容,希望文章能够帮你解决SQL Server 2005 返回修改后的数据所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

相关文章

猜你在找的MsSQL相关文章

介绍如何在 Microsoft SQL Server 中生成连续的数字、字符或者时间序列值,包括使用系统视图 master.dbo.spt_values 、使用通用表表达式以及自定义的表值函数 generate_series 生成各种数据序列。
讨论如何在 Microsoft SQL Server 中实现一个只能存储一行数据的表,介绍了基于计算列创建唯一约束的实现方法。使用 MERGE 插入和更新数据,同时为了防止数据被删除,通过触发器禁止删除操作。
本文详细介绍了 Microsoft SQL Server 数据库的体系结构以及各个组件的功能。包括整体结构,协议层中的TCP/IP协议、共享内存协议、命名管道协议以及TDS协议、关系引擎中的命令解析器、查询优化器、查询执行器,存储引擎中的访问方法、缓冲管理器、事务管理器,数据文件以及日志文件。
本文介绍了如何利用 Microsoft SQL Server 中的 CASE 表达、len、left、right、stuff、concat 等字符串函数实现信息的隐藏,也就是将其中部分内容显示为星号(*)。具体案例包括姓名、手机号、身份证号以及银行卡号等个人敏感信息的保护。
元数据 (metadata) 最常见的定义为'有关数据的结构数据',或者再简单一点就是'关于数据的信息',日常生活中的图例、图书馆目录卡和名片等都可以看作是元数据。在关系型数据库管理系统 (DBMS)
1、在安装上和SQL Server 2005比较上更加丰富的选项设置. 2、SQL Server 2008的新特性FILESTREAM ,可以在安装时配置,也可以在安装后启用。3、两个小工具调整。
Firebird is a database with 20 years of history, full set of features (including transactions, store
SQLite在3.7.0版本引入了WAL (Write-Ahead-Logging),WAL的全称是Write Ahead Logging,它是很多数据库中用于实现原子事务的一种机制,引入WAL机制之