DML_The OUTPUT Clause
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的更多相关文章
- 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 ...
- OUTPUT、Merge语句的使用
新版本的数据库中增加了OUTPUT子句,这个很好用,详细的使用方式大家可以参考SQL的联机帮助文档.这里仅记录下常用的场景:在对数据库进行增删改的时候我们有时候需要记录日志(这里指将日志记录在DB中而 ...
- Sql Server系列:Insert语句
1 INSERT语法 [ WITH <common_table_expression> [ ,...n ] ] INSERT { [ TOP ( expression ) [ PERCEN ...
- Sql Server系列:Update语句
1 UPDATE语法结构 [ WITH <common_table_expression> [...n] ] UPDATE [ TOP ( expression ) [ PERCENT ] ...
- Sql Server系列:Delete语句
数据的删除将删除表的部分或全部记录,删除时可以指定删除条件从而删除一条或多条记录.如果不指定删除条件,DELETE语句将删除表中全部的记录,清空数据表. 1 DELETE语法 [ WITH <c ...
- SQL入门经典(二) 之数据库基本查询、添加、更新和删除
使用SQL查询: SQL查询基本语法: SELECT [ALL|DISTINCT] [TOP (<expression>) [PERCENT] [WITH TIES] ] <col ...
- T-SQL 查询、修改数据表
T-SQL修改表数据 INSERT语句 语法: INSERT [TOP(expression) [PERCENT]] [INTO] { <object> | rowset_function ...
- SQL Server T-SQL高级查询
name like 'ja%'; select * from student where name not like '%[j,n]%'; select * from student where na ...
- CUBRID学习笔记 48查询优化
cubrid的中sql查询语法 查询优化 c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com ...
随机推荐
- Struts2导图
- 求平均成绩(hdu2023)
注意:要心细,不要错在小细节上.如int c[6];double agve; c[j]=agve:这是错误的. #include<stdio.h> #include<cmath> ...
- Spring MVC必须知道的执行流程
Spring MVC的执行流程 一.名词解释 1.前端控制器(DispatcherServlet) 接收请求,响应结果,相当于转发器,中央处理器 2.处理器映射器(HandlerMapping) 根据 ...
- Python - 常用的PyCharm的快捷键和使用场景介绍
关于PyCharm的快捷键,由于数量众多,差不多有100个,相信几乎没有人会记住所有,每个人都会有自己顺手的几个,这里我将自己用着顺手,不别扭的快捷键分享出来,同时分享在哪里可以找到所有的快捷键. 一 ...
- docker的file内容解释
关键字---重点啊) FROM 基础镜像,当前新镜像是基于哪个镜像的 MAINTAINER 镜像维护者的姓名和邮箱地址 RUN 容器构建时需要运行的命令 EXPOSE 当前容器对外暴露的端口 WO ...
- [批处理教程之Git]001.Git 常用命令大全
基本技巧 1.安装后的第一步 安装git后,第一件事你需要设置你的名字和邮箱,因为每次提交都需要这些信息. $ git config --global user.name "Some One ...
- Spring_使用JdbcTemplate和JdbcDaoSupport
1.JdbcTemplate 简化 JDBC 模板查询 ①每次使用都创建一个 JdbcTemplate 的新实例, 这种做法效率很低下.②JdbcTemplate 类被设计成为线程安全的, 所以可以再 ...
- MVC案例之模糊查询与删除
查询操作: Servlet //1. 调用 CustomerDAO 的 getAll() 得到 Customer 的集合 List<Customer> customers ...
- 设计带构造函数的Dog类 代码参考
#include <iostream> #include <string> using namespace std; class Dog { private: string n ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 定时任务最佳实战(三)
上一篇(https://www.cnblogs.com/meowv/p/12974439.html)完成了全网各大平台的热点新闻数据的抓取,本篇继续围绕抓取完成后的操作做一个提醒.当每次抓取完数据后, ...