今天在公司看到同事写了个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
分享到:
相关推荐
在SQL2005中,还会介绍Transact-SQL(T-SQL)的扩展特性,如存储过程、触发器、函数等,这些都是数据库开发和管理中的重要工具。存储过程可以封装复杂的业务逻辑,提高代码复用性和执行效率;触发器则用于实现数据的...
本文将深入解析 SQL Server 2005 的基本方法与常用语句,包括数据库的创建与删除、表的创建与修改、数据的插入与删除等关键操作,旨在为数据库管理员和开发者提供全面的指导。 #### 1. 创建数据库 创建数据库是...
SQL Server 2005 数据库的编码方式是决定数据库中字符存储和比较方式的重要设置。默认情况下,SQL Server 2005 数据库的编码方式是 Latin1_General_CI_AS,这种编码方式不支持中文字符,导致在数据库中写入中文时...
在SQL Server 2005中,数据库管理系统(DBMS)提供了丰富的功能,使得开发者和数据库管理员能够高效地管理和操作数据。本课件主要涵盖了四个关键主题:事务视图、T-SQL编程、存储过程和用户自定义函数,以及触发器。...
在C#编程中,向数据库中修改一行数据是常见的任务,尤其在开发Web应用程序或桌面应用程序时。这个过程通常涉及到数据库连接、SQL语句的构造和执行,以及事务处理等关键环节。以下将详细讲解如何使用C#实现这一功能。...
在这个例子中,我们关注的是如何将SQL Server 2005中的数据同步到Oracle数据库中。这个过程通常涉及以下几个关键步骤: 1. **安装Oracle客户端**:在SQL Server 2005服务器上安装Oracle 9i客户端是首要任务,因为这...
最后,使用EXEC函数来执行动态生成的SQL语句,并将查询结果作为JSON数据返回。 三、存储JSON数据到数据表中 将生成的JSON数据存储到数据表中,可以使用INSERT INTO语句来将JSON数据插入到指定的数据表中。 例如:...
这有助于在修改数据后立即获取反馈,例如返回新插入的行ID。 #### 排名函数 (Ranking Functions) 排名函数是一组强大的功能,可以帮助用户根据特定标准对结果集中的行进行排序和分组。在SQL Server 2005中,新增了...
在SQL数据库管理和日常办公中,有时我们需要将存储在SQL数据库中的数据导出到Microsoft Word文档中,以便于报告、分析或共享。这个过程涉及到数据库查询、数据处理和文档生成技术。下面将详细介绍如何实现这一操作。...
在SQL Server 2005中,这些语句用于处理数据。 2. 查询数据:使用SELECT语句可以查询数据库中的数据。你可以通过指定列名、表名,以及添加WHERE子句来过滤结果。此外,还可以使用GROUP BY进行分组,HAVING来过滤...
完成数据导入后,接下来需要进行批量修改以及数据验证工作,以确保所有数据都已经正确地保存到了数据库中。具体操作可以参考给定文件中的部分代码示例: ```sql -- 批量修改原数据 UPDATE dbo.jusoft_P_Export SET ...
数据定义语言是SQL中的一个关键组成部分,主要用于创建和修改数据库对象,如表格、视图、索引等。在实验中,学生可能需要创建一个新的表来存储从Excel文件导入的“原始数据”。例如,创建一个名为`PersonalInfo`的表...
在VB.NET编程环境中,结合SQL数据库,我们可以构建一个功能丰富的数据管理应用,其中包括对数据库中的数据进行添加、删除、编辑和读取等基本操作,同时支持照片的上传和下载功能。下面将详细介绍如何实现这些功能。 ...
【SQL Server 2005 用户登录管理前端程序与VB2005的结合】 在IT行业中,数据库管理和用户认证是关键的安全要素。本项目利用Visual Basic 2005(VB2005)作为前端开发工具,配合SQL Server 2005数据库管理系统,构建...
在IT领域,尤其是在数据库开发和应用编程中,C#与SQL Server的结合是常见的实践。本文将详细探讨如何使用C#来操作SQL Server中的存储过程,包括添加、修改、删除和查询数据。存储过程是预编译的SQL语句集合,它们...
`Sql_新增字段`可能是易语言中的一个方法,用于动态修改表结构,增加新的列。 7. **Sql_字段是否存在**:在编程时,验证表是否已有特定字段是很常见的需求。`Sql_字段是否存在`函数可能用来检查目标表是否已经包含...
例如,使用`Execute`方法来执行`SELECT`查询以获取数据,或使用`Execute`方法执行`INSERT`、`UPDATE`或`DELETE`语句来修改数据。 4. **处理结果集**:如果你的SQL语句返回了结果集,你可以使用Recordset对象来接收...
本书重点阐述了SQL Server 2005的基础知识,前半部分以建立一个金融数据库系统为主线,从最基础的收集信息入手,一步步地引导读者学会如何保证数据库的安全,创建表、主键、索引等项目,在表之间建立恰当的关系,并...
信息架构视图基于 SQL-92 标准中针对架构视图的定义,这些视图独立于系统表,提供了关于 SQL Server 元数据的内部视图。信息架构视图的最大优点是,即使我们对系统表进行了重要的修改,应用程序也可以正常地使用这些...