SQLServer2005 的查询独占模拟

2016-02-19 10:45 0 1 收藏

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是SQLServer2005 的查询独占模拟,一起来学习了解下吧!

【 tulaoshi.com - 编程语言 】

对于应用来说,我并不提倡人为给记录加锁,这样会惹来很多麻烦,况且锁并不能解决所有问题,如果你有这方面好的经验我们可以进一步交流。
对于应用来说,我并不提倡人为给记录加锁,这样会惹来很多麻烦,况且锁并不能解决所有问题,如果你有这方面好的经验我们可以进一步交流。
代码如下:

set nocount on
use tempdb
go
if (object_id ('tb' ) is not null )
drop table tb
go
create table tb (id int identity (1 , 1 ), name varchar (10 ), tag int default 0 )
insert into tb (name ) select 'a'
insert into tb (name ) select 'b'
insert into tb (name ) select 'c'
insert into tb (name ) select 'd'
insert into tb (name ) select 'e'
go
update top (2 ) tb with (rowlock , readpast ) set tag = 1 output inserted . id , inserted . name where tag = 0
go
update top (2 ) tb with (rowlock , readpast ) set tag = 1 output inserted . id , inserted . name where tag = 0
go
update top (2 ) tb with (rowlock , readpast ) set tag = 1 output inserted . id , inserted . name where tag = 0
go
set nocount off
/*
id name
----------- ----------
1 a
2 b
id name
----------- ----------
3 c
4 d
id name
----------- ----------
5 e
*/

如果你有更好的建议,我们不妨探讨一下。

来源:https://www.tulaoshi.com/n/20160219/1595656.html

延伸阅读
1,复制简介 简单的说,复制是获取一个或多个数据库的过程,它系统的针对出入不同数据库的数据,提供基于规则的拷贝机制。 复制分为三种角色, 1,发布服务器 发布服务器可以被看成是源数据库。 2 ,分发服务器 分发数据库针对更改而承担类似某些票据交换所的工作,他是一个特殊的分发数据库,用于对更改进行跟踪,同时也跟踪哪些订阅服务...
测试环境SQL2005,windows2003 DECLARE @idoc int; DECLARE @doc xml; SELECT @doc=bulkcolumn FROM OPENROWSET( BULK 'D: test.xml', SINGLE_BLOB) AS x EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc SELECT * into #temp FROM OPENXML (@Idoc, '/Root/Item',2) WITH ( [ID] varchar(10) ...
语法很简单,比如 代码如下: declare @t table (id uniqueidentifier default newid (), name varchar (100 )) insert into @t (name ) output inserted .id select 'jinjazz' union select 'sqlserver' /*输出类似 3880DB77-5ADF-472D-A68D-7518DD76F3B8 F478A3F5-A501-404E-A328-372EEC26279D */
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) BR 例子: 代码如下: select * from ( select *, ROW_NUMBER() OVER(Order by a.CreateTime DESC ) AS RowNumber from table_name as a ) as b where RowNumber BETWEEN 1 and 5 将会返回table表 其中有一列名字为 RowNumber, 编号从1开始 示例: ...
1软件准备条件 机器A端:SqlServer2005 Management Studio + WinServer 2003 Enterprise (作为发布服务器) 机器B端:Sqlserver2005 Management Studio Express + WinXP(作为订阅服务器) 一: 1软件准备条件 机器A端:SqlServer2005 Management Studio + WinServer 2003 Enterprise (作为发布服务器) 机器B端:Sq...

经验教程

654

收藏

35
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部