主题:  是不是经过order by的语句不允许更新?

010224

职务:普通成员
等级:1
金币:0.0
发贴:54
#12004/10/19 22:46:12
在本版置顶的帖子里有一个问题解答
说:经过排序(order by) 的记录集(rs)不允许有更新操作(rs.update)
确实是这样吗?
我在使用Access数据库的时候,偶尔会写这样的代码:
sql="select top 1 * from news order by id desc"
set rs=server.CreateObject("adodb.recordset" )
rs.open sql,conn,1,3
id=rs("id" )+1
rs.addnew
rs("id" )=id
rs("content" )=server.HTMLEncode(content)
rs("ntime" )=now()
rs.update
它是可以成功执行的。

但是今天用SQL的时候出了点小问题
同样的代码,系统却提示:
ADODB.Recordset 错误 '800a0cb3'
当前记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制。
/school/insert.asp,行 25

这是什么原因?



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#22004/10/19 23:40:05
ID号是计算机自动插入的,不能手工修改。
关于ID号的用途,以前这里有讨论,总之ID号是用以设置数据记录的唯一性,删除记录后,原ID号以后不会重复再出现。打个比方,象发票号,作费后,是不会有第二张同样号码的发票号的(除非是假的)。
请检查字段是否为自动编号,或SQL里的标识。


非常大鱼

010224

职务:普通成员
等级:1
金币:0.0
发贴:54
#32004/10/20 8:22:32
知道了,呵呵
我定义的id是一个整形,并没有使用自动编号
不过昨天在SQL里面出现的问题还是没有解决