Oracle数据库SQL,表content中有一个indexnum字段,如何对它进行加1减1

表content中有一个indexnum字段,这个字段的作用是排序,页面传入一个id值,对这个id所对应的indexnum的值进行加1,同时对这个id临近的id所对应的indexnum的值进行减1.或者你们有什么好的办法,能实现排序就行,假如升序,这条数据和排在它前面的那条数据对调?

第1个回答  2012-09-26
恐怕需要一个存储过程来实现。
思路:
1、id主键;
2、indexnum 数字型。
实现:
定义对应于id的变量
1、通过传入的id,获取对应的indexnum,并找到小于该indexnum的最大值indexnum所对应的id,并赋值给变量;
2、更新indexnum+1,条件id=传入id;
3、更新indexnum-1,条件id=变量id。
第2个回答  2012-09-26
给你写了一个存储过程:
CREATE OR REPLACE PROCEDURE prc_sort(v_id IN VARCHAR2) IS
n_index NUMBER;
BEGIN
-- 获取指定id的顺序号
SELECT indexnum INTO n_index WHERE ID = v_id;
-- 更新指定id的顺序号
UPDATE CONTENT SET indexnum = indexnum + 1 WHERE ID = v_id;
-- 更新于指定id顺序号相同的数据
UPDATE CONTENT SET indexnum = n_index WHERE ID <> v_id AND indexnum =

n_index + 1;

COMMIT;
END;本回答被提问者和网友采纳
第3个回答  2012-09-26
建trigger
相似回答