declare @today varchar(10)
set @today=CONVERT(varchar(10),getDate(),120) if exists(select 1 from managercounter where calendar=@today)
insert managercounter(calendar,counter) values(@today,'1')
else
update managercounter set counter=counter+1 where calendar=@today这样写!
set @today=CONVERT(varchar(10),getDate(),120) if exists(select 1 from managercounter where calendar=@today)
insert managercounter(calendar,counter) values(@today,'1')
else
update managercounter set counter=counter+1 where calendar=@today这样写!
解决方案 »
- CHAR转换为时间类型并与当前时间进行对比
- 数据库设计工具 powerdesigner
- 关于在XP系统下(GHOST系统)安装SQLSERVER2000个人版问题
- sql分析器在执行xp_cmdshell命令时为什么有带空格的文件名就无法打开?
- SQL Mail 发超链接的问题。
- 为什么索引会失效?
- 关于SQL的查询问题
- 变量获取不到值, YBM_TABLE为空 导致下面的错误对象名 'System.Data.DataRowView' 无效。
- 请教一句SQL语句
- 产生"[Microsoft][ODBC SQL Server Driver]没有执行可选特性"错误的原因??
- 有谁知道ms-sql serve的数据库文件的格式?来者给分!!--100
- 为什么总是显示“无项目”
declare @today varchar(10)
set @today=CONVERT(varchar(10),getDate(),120)
begin tran tr1
select * from managercounter where calendar=@today
if(@@rowcount=0)
insert managercounter(calendar,counter) values(@today,'1')
else
update managercounter set counter=counter+1 where calendar=@today
GO
commit tran tr1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
go
begin tran
insert table1 values(1) ----这句是对的
insert table1 values('aaa') ----这句由于类型不一样将报错
commit transelect * from table1 ------结果是两句都没插入!应为他们是一个事务
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE是为了防止在事务没有完成的时候另一用户,访问事务内,未提交的数据
create table Table1 (a int)
go
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
begin tran
insert table1 values(1) ----这句在事物没有commit前,被另一个用户
----访问是错误的,应为下面有可能会出错 insert table1 values('aaa') ----这句由于类型不一样将报错
----设置了SERIALIZABLE的话就不会发生脏读
commit transelect * from table1
pengdali(大力) (
如果两个事务几乎同时(select 1 from managercounter where calendar=@today)
都为true的话,那不会两次
insert managercounter(calendar,counter) values(@today,'1')
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
declare @today varchar(10)
set @today=CONVERT(varchar(10),getDate(),120)
begin tran tr1
select * from managercounter where calendar=@today
if(@@rowcount=0)
insert managercounter(calendar,counter) values(@today,'1')
else
update managercounter set counter=counter+1 where calendar=@today
GO
commit tran tr1
为社么只需要READ UNCOMMITTED
我觉得不对啊
select * from managercounter where calendar=@today
之后,记录没有开锁,其他用户不能插入或修改,直到COMMIT。
为社么READ COMMITTED比READ unCOMMITTED地级别高呢?
在这里用READ COMMITTED反而不好。
declare @today varchar(10)
set @today=CONVERT(varchar(10),getDate(),120)
select * from managercounter (updlock) where calendar=@today
if(@@rowcount=0)
insert managercounter(calendar,counter) values(@today,'1')
else
update managercounter set counter=counter+1 where calendar=@today
GO