DML_The OUTPUT Clause

/**/
----------------------------------------------------------------------------------------------
--带有OUTPUT的INSERT语句
IF OBJECT_ID('dbo.T5','U') IS NOT NULL DROP TABLE dbo.T5
CREATE TABLE dbo.T5
(
keycol INT NOT NULL IDENTITY(1,1) CONSTRAINT PK_T5 PRIMARY KEY,
datacol NVARCHAR(40) NOT NULL
); --查询一下,可从这个 pubs.employee 表中插入值
SELECT *
FROM pubs.dbo.employee
WHERE job_id = N''; --SET IDENTITY_INSERT dbo.T5 ON;
--dbcc checkident(T1,RESEED,0) --重置标识列为0
--dbcc checkident(T1,RESEED,1) --重置标识列为0 INSERT INTO dbo.T5(datacol)
OUTPUT inserted.keycol, inserted.datacol
SELECT lname
FROM pubs.dbo.employee
WHERE job_id = N''; SELECT * FROM T5 dbcc checkident(T5,RESEED,6) --重置标识列为6,下一个标识值将从 7 开始
--a. 知识点
--在对标识列进行重新规划相关列值的时候,需采用 checkident函数对表中标识值进行规整
--1 dbcc checkident(‘表名’) 默认将表中的标识列的起始值初始化为 当前此列的最大值
-- dbcc checkident(‘表名’,NORESEED) 返回当前标识列最大值
--2 dbcc checkident(‘表名’,RESEED) 功能类似 dbcc checkident(‘表名’)
--3 dbcc checkident(‘表名’,RESEED,新标识列起始值) 手动指定新标识列起始值 --b.知识点,再回顾 IDENTITY属性(Chapter 8. Data Modification: The IDENTITY Property) --将结果集导入到另外一个表中
DECLARE @NewRows TABLE(keycol INT, datacol NVARCHAR(40));
INSERT INTO dbo.T5(datacol)
OUTPUT inserted.keycol, inserted.datacol
INTO @NewRows
SELECT lname
FROM pubs.dbo.employee
WHERE job_id = N''; SELECT * FROM @NewRows;
----------------------------------------------------------------------------------------------
--带有OUTPUT的DELETE语句 SELECT * FROM dbo.Orders --尽管 testdb 库下有 Orders,我们还是从 Northwind.dbo.Orders 插入数据
SELECT * FROM Northwind.dbo.Orders
WHERE IF OBJECT_ID('dbo.OrdersB','U') IS NOT NULL DROP TABLE dbo.OrdersB;
SELECT * INTO dbo.OrdersB FROM Northwind.dbo.Orders ; SELECT * FROM testdb.dbo.OrdersB
-------------------------
DELETE FROM dbo.OrdersB
OUTPUT
deleted.OrderID,
deleted.OrderDate,
deleted.EmployeeID,
deleted.CustomerID
WHERE OrderDate < '' SELECT * FROM dbo.OrdersB
------------------------- --归档
sp_help Northwind.dbo.Orders ( × )
sp_help dbo.Orders ( × )
sp_help Orders -------------------------
DECLARE @OrdersBB TABLE(OrderID INT, OrderDate datetime, EmployeeID INT, cUSTOMERid NVARCHAR(10))
DELETE FROM dbo.OrdersB
OUTPUT
deleted.OrderID,
deleted.OrderDate,
deleted.EmployeeID,
deleted.CustomerID
INTO @OrdersBB
WHERE OrderDate < '' SELECT * FROM @OrdersBB
------------------------- ----------------------------------------------------------------------------------------------
--带有OUTPUT的UPDATE语句
--
SELECT * FROM Northwind.dbo.[Order Details];
SELECT * FROM OrderDetails --检查一下之前 testdb中是否用过这个表,检查后没用过,讨厌这个表还要加中括号 IF OBJECT_ID('dbo.OrderDetails','U') IS NOT NULL DROP TABLE dbo.OrderDetails;
SELECT * INTO dbo.OrderDetails FROM Northwind.dbo.[Order Details] SELECT * FROM OrderDetails
-------------------------------------
UPDATE dbo.OrderDetails
SET discount = discount + 0.03
OUTPUT
inserted.OrderID,
inserted.ProductID,
deleted.Discount AS olddiscount,
inserted.Discount AS newdiscount
WHERE ProductID = 51; ------------------------------------ ----------------------------------------------------------------------------------------------
--带有OUTPUT的MERGE语句
--此处使用之前 MERGE中 “合并的例子”
--3.Merge语句 without And condition --如果不记得字段值,就查询一下
SELECT * FROM dbo.Customers MERGE INTO dbo.Customers AS TGT
USING dbo.CustomersStage AS SRC
ON TGT.custid = SRC.custid
WHEN MATCHED THEN --此处没有其他条件,即使来源表与目标表完全相同,也要更新目标表
UPDATE SET
TGT.companyname = SRC.companyname,
TGT.phone = SRC.phone,
TGT.address = SRC.address
WHEN NOT MATCHED THEN
INSERT (custid, companyname, phone, address)
VALUES (SRC.custid,SRC.companyname, SRC.phone, SRC.address) ----->>>此处,去掉MERGE之前结尾的 ;
OUTPUT $action, inserted.custid, ----->>>$action
deleted.companyname AS oldcompanyname,
inserted.companyname AS newcompanyname,
deleted.phone as oldphone,
inserted.phone as newphone,
deleted.address as oldaddress,
inserted.address as newaddress;

1) --带有OUTPUT的INSERT语句

......(略)

2) --带有OUTPUT的DELETE语句

......(略)
3) --带有OUTPUT的UPDATE语句

4) --带有OUTPUT的MERGE语句

DML_The OUTPUT Clause的更多相关文章

  1. A Beginner’s Guide to the OUTPUT Clause in SQL Server

    原文 A Beginner’s Guide to the OUTPUT Clause in SQL Server T-SQL supports the OUTPUT clause after the ...

  2. OUTPUT、Merge语句的使用

    新版本的数据库中增加了OUTPUT子句,这个很好用,详细的使用方式大家可以参考SQL的联机帮助文档.这里仅记录下常用的场景:在对数据库进行增删改的时候我们有时候需要记录日志(这里指将日志记录在DB中而 ...

  3. Sql Server系列:Insert语句

    1 INSERT语法 [ WITH <common_table_expression> [ ,...n ] ] INSERT { [ TOP ( expression ) [ PERCEN ...

  4. Sql Server系列:Update语句

    1 UPDATE语法结构 [ WITH <common_table_expression> [...n] ] UPDATE [ TOP ( expression ) [ PERCENT ] ...

  5. Sql Server系列:Delete语句

    数据的删除将删除表的部分或全部记录,删除时可以指定删除条件从而删除一条或多条记录.如果不指定删除条件,DELETE语句将删除表中全部的记录,清空数据表. 1 DELETE语法 [ WITH <c ...

  6. SQL入门经典(二) 之数据库基本查询、添加、更新和删除

    使用SQL查询: SQL查询基本语法: SELECT [ALL|DISTINCT]  [TOP (<expression>) [PERCENT] [WITH TIES] ] <col ...

  7. T-SQL 查询、修改数据表

    T-SQL修改表数据 INSERT语句 语法: INSERT [TOP(expression) [PERCENT]] [INTO] { <object> | rowset_function ...

  8. SQL Server T-SQL高级查询

    name like 'ja%'; select * from student where name not like '%[j,n]%'; select * from student where na ...

  9. CUBRID学习笔记 48查询优化

    cubrid的中sql查询语法 查询优化 c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com ...

随机推荐

  1. ftp服务器搭建(二)

    1.已经安装好了vsftpd  进入到根目录下的/etc目录 ls查看一下 2.拷贝一下上面的两个配置文件 我拷贝到了我新建的目录中了 3.查看现在的网络连接方式——我的是-net方式 当然其他方式也 ...

  2. 201771010128王玉兰《面向对象程序设计(Java)第十四周学习总结》

    第一部分:理论知识总结: (1)Swing 设计模式(Design pattern)是设计者一种流行的 思考设计问题的方法,是一套被反复使用,多数人 知晓的,经过分类编目的,代码设计经验的总结. 使用 ...

  3. 实验6、Python-OpenCV宽度测量

    一. 题目描述 测量所给图片的高度,即上下边缘间的距离. 思路: 将图片进行阈值操作得到二值化图片. 截取只包含上下边框的部分,以便于后续的轮廓提取 轮廓检测 得到结果 二. 实现过程 1.用于给图片 ...

  4. 实验二:Linux系统简单文件操作命令

    項目 内容 这个作业属于哪个课程() 课程链接 这个作业的要求在哪里 实验要求 学号-姓名 17043133-木腾飞 作业学习目标 学习在Linux系统终端下进行命令行操作: 学习掌握常用命令行操作并 ...

  5. 【C++】变量

    注意:以下内容摘自文献[1],修改了部分内容. 1.变量:在程序运行期间其值可以改变的量称为变量.一个变量应该有一个名字,并在内存中占据一定的存储单元,在该存储单元中存放变量的值.变量名代表内存中的一 ...

  6. MySQL 5.7.30 的安装/升级(所有可能的坑都在这里)

    楔子 由于之前电脑上安装的MySQL版本是比较老的了,大概是5.1的版本,不支持JSON字段功能.而最新开发部门开发的的编辑器产品,使用到了JSON字段的功能. 因此需要升级MySQL版本,升级的目标 ...

  7. [PHP学习教程 - 网络]004.模拟发送HTTP请求[GET/POST](HTTP Simulator)

    引言:经常在开发期间,客户端与服务端的调试都是借助于真实的容器返回.尤其是在处理到POST时,通常刚刚入门的兄弟姐妹就一定要借助容器.今天,我们就来处理一下模拟HTTP. 本文列举了常见的四种请求方式 ...

  8. Rocket - util - HeterogeneousBag

    https://mp.weixin.qq.com/s/5hNM4yeQjaLvAJzgMG9PGQ   介绍HeterogeneousBag的实现.   ​​   1. 基本介绍   一个口袋(bag ...

  9. 基础数论——EXGCD

    1.前言 \(皆さん.こんにちは.\)今天我们来讲 \(EXGCD\) .(扩展欧几里得) 既然是扩展嘛,那肯定有不扩展的,也就是 \(GCD\) . 我们都知道 \(GCD\) 怎么写: ll GC ...

  10. Java实现 LeetCode 355 设计推特

    355. 设计推特 设计一个简化版的推特(Twitter),可以让用户实现发送推文,关注/取消关注其他用户,能够看见关注人(包括自己)的最近十条推文.你的设计需要支持以下的几个功能: postTwee ...