@_@ 没有吧,你可以再程序里,写个判断阿,if(1.id=1)....
解决方案 »
- 查询问题
- 求教,同列日期转区间日期
- 这个为什么提示语法错误?
- 提高数据库性能,在设计表时遵循的基础原则是什么?
- 请问如何通过运行sql语句来整理一个表格?
- SQL2005登陆问题
- SAMPLEDB.MDF' cannot be opened because it is version 655.
- 如何在视图中新增一列
- sql server 2005 动态传入参数,在XML字段中使用XPath如何查询?
- 请教:SQLServer2000不可以在XP中安装,只有装win 2000吗?那XP下可以直接装win2000吗?
- 怎样让每一句执行语句之间停顿n秒?
- 我是初学SQL的,安装了SQL2000,使用查询分析器它的提示都是英文,怎样才能改成中文,请帮帮我
是循环排序(不知道用什么词描述)还是先到先得
解释一下,
循环排序有10条记录编号为1、2、3、4、5、……10,现在有五个人A、B、C、D、E,
1、6对应A,2、7对应B……
建立数据库中加入字段,更具人的编号插入当前记录先到先得 有10条记录编号为1、2、3、4、5、……10,现在有五个人A、B、C、D、E,
当A打开了1记录,其他的人都不能对1记录进行修改等操作……
使用锁机制来锁定纪律,或者添加标志位来控制记录
2,建立查询行标记表B(A表ID,表主键) 当用户提交查询SQL语句时候,加个WHERE条件
(如:
WHERE ... AND NOT EXISTS(SELECT 1 FROM B表 INNER JOIN A表 ON
ON A表.A表ID=B表.A表ID AND B表.主键=[所查询表名].表主键))
,用于过滤已经查询的行。根据会话时间间隔,定期删除会话时间表A和表B的内容。
WHERE ... AND NOT EXISTS(SELECT 1 FROM B表 INNER JOIN A表 ON
ON A表.A表ID=B表.A表ID AND A表.表名=N'所查询表名' AND B表.主键=[所查询表名].表主键)
默认为0,
每次读取时都带着where 标识=0
而在读取时就改为 标识=1即正在用的 标识=1读取时 Select min(id) From table where 标识=0 and ....
-- 查询窗口发出下面的查询语句
BEGIN TRAN -- 事务不提交或者回滚, 以保持锁不释放
SET ROWCOUNT 1
SELECT *
FROM tb WITH(UPDLOCK, READPAST)
-- UPDLOCK 让锁保留到事务结束, READPAST 跳过已经锁定的数据 模拟第2个用户(语句与第1个用户一样,只是在另一个连接中执行)
-- 查询窗口发出下面的查询语句
BEGIN TRAN
-- 事务不提交或者回滚, 以保持锁不释放
SET ROWCOUNT 1
SELECT *
FROM tb WITH(UPDLOCK, READPAST)
-- UPDLOCK 让锁保留到事务结束, READPAST 跳过已经锁定的数据第一个用户取过的数据,在第二个用户查询时就不会显示
支持ddqqyy的做法,建立一个全局键值表。
Create Table Global_Key (
Id int identity not null,
User varchar(100) not null ,
flag int not null default 0 , -- 0表示未处理,1表示已处理
constraint pk_global_key primary key Global_key(id))2.-----
insert into global_key ( user) values ('A') --例A用户开始操作
select id from global_key where user = 'A' and flag = 0 --得到要操作的id
...... --进行业务操作
update global_key set flag = 1 where user = 'A' and flag = 0 --结束本次操作B用户按上面的步骤,由于global_key表中的id是自增长的,就不会有冲突了3.-----
当然这里面还有要改进的地方,比如一个用户处理过程中出错了怎么办,是由该用户继续再处理一次,还是就跳过了! 具体问题要具体分析
2、使用锁,with lock!