日期:2014-05-17  浏览次数:21105 次

求一条update语句
表格字段如下:
  ID VARCHAR2(6) not null,
  URL VARCHAR2(200),
  CLASSNAME VARCHAR2(20),
  EVENT VARCHAR2(400),
  COLUMNNAME VARCHAR2(20),
  COLUMN_NUM NUMBER

其中,column_num是一个排序字段,我是根据这个来给显示的记录集进行排序。
现在有一个功能是记录的上下移动,比如点向上移动,被操作的记录column_num的值减去1,它上面那条记录的column_num的值加上1,就等于两条记录对调了顺序。
我是按接收的id来进行判断哪条记录的,等于是where id=" + request("id")这样判断提交的记录id,那么它上面的那条记录怎么样用一条语句同时修改?

另外,我现在写的只修改一条记录用的是
"update W_column set column_num = column_num - 1 where id = '" + request("id") + "'"
但修改后column_num的都变成了2………………晕

------解决方案--------------------
第一个问题建议用一个触发器来完成!
第二个问题,我根本看不清哪个单引号哪个是双引号,是不是与变量联接时联接符出错了?或者看看你ID类型是不是与所获取的值类型相同!
------解决方案--------------------
"update W_column set column_num = column_num - 1 where id = '" + request("id") + " '" 

看起来是没有问题,将request("id") 这条记录的column_num 减少1,没错的!

第1个问题可以选择个程序来解决,调用个java类(自己写)
按照你的需求来看,你的更新的sql应该按照column_num 来确定唯一一条记录吧?
------解决方案--------------------
你将当前记录column_num-1的时候已经和上条记录的column_num 相同了,所以你应该先将上条记录的column_num+1,然后根据ID将当前记录column_num-1.感觉用同一个语句不好实现,触发器是一个不错的选择