求一个方法:在插入一条记录,流水号字段自动增长1,但不能用序列。 如果不一定要连续的,那么建议用sequence。用他来解决这些问题,包括你的并发! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个ID和其他字段组成联合主键,ID必须是从1开始的,还有其他用处,所以不能用序列,我只是想知道如何实现一个找到一个字段中的最大值然后+1的方法,好象有maxvalue这个函数? 找到了,用select nvl(max(id),0)+1 from abc where another_id=5就可以了。但max(id)是取符合条件记录总数,还是找这个字段中数值的最大值呢? 当然是最大值。不过不用seq不是自找麻烦 我说得详细些吧:id1和id2是abc表的联合主键,可预见的记录是:id1 id210 110 210 313 114 2我需要的是上面这种情况,如果id2作为序列的话,那必须加一个字段来表示优先级顺序,我本想直接用id2来作为记录的顺序的。我这样的设计存在什么问题吗?请各位指教 用rownum呢?这是系统自带的,你插入一条记录rownum就自动加1了 这是分析函数的典型应用id1和id2都用序列,另外加一个列id3做主键id1和id2上都建索引,用分析函数显示id1 id210 110 210 313 114 2或者分成主从表,id1作主表主键,id2作从表主键 可以考虑增加一个序号表create table seqno(no number);通过存储过程或SQL取得序号表的序号作为要插入的值,然后将该序号表序号加1。 我觉得如果要考虑并发问题的话,应该要进行锁!不过好在我的表的数据量非常小,绝对不会超过1000条记录,使用频率也不会很高。所以用select nvl(max(id),0)+1 from abc where another_id=5的方法自动增加1也可以。 我觉得如果要考虑并发问题的话,应该要进行锁!不过好在我的表的数据量非常小,绝对不会超过1000条记录,使用频率也不会很高。所以用select nvl(max(id),0)+1 from abc where another_id=5的方法自动增加1也可以。 这种问题当然用sequence了用max()+1肯定要加锁了这样并发性就很差了 关于删除 asm 磁盘组中的一块磁盘 或 磁盘组 oracle递归查找问题 关于动态sql的问题 大家帮忙看下,我写了个函数返回字符串,在sql中调用不起作用,高手帮忙 constraints 分组查询问题 十万火急!!Sqlserver2005存储过程转换成Oracles存储过程的问题。 怎么在存储过程中使用临时表并向临时表输入数据!!!!!!!请给个例子 如何通过触发器删除超出时间范围的数据?在线等,急! 用powerdesigner9.5针对oracle设计时生成的sql脚本中表、字段的名称都加上了双引号,这很麻烦,如何去掉双引号? 谁有数据转换工具? 一个sql语句
但max(id)是取符合条件记录总数,还是找这个字段中数值的最大值呢?
id1和id2是abc表的联合主键,可预见的记录是:
id1 id2
10 1
10 2
10 3
13 1
14 2
我需要的是上面这种情况,如果id2作为序列的话,那必须加一个字段来表示优先级顺序,我本想直接用id2来作为记录的顺序的。
我这样的设计存在什么问题吗?请各位指教
id1 id2
10 1
10 2
10 3
13 1
14 2或者分成主从表,id1作主表主键,id2作从表主键
create table seqno(
no number);
通过存储过程或SQL取得序号表的序号作为要插入的值,然后将该序号表序号加1。
不过好在我的表的数据量非常小,绝对不会超过1000条记录,使用频率也不会很高。
所以用select nvl(max(id),0)+1 from abc where another_id=5的方法自动增加1也可以。
不过好在我的表的数据量非常小,绝对不会超过1000条记录,使用频率也不会很高。
所以用select nvl(max(id),0)+1 from abc where another_id=5的方法自动增加1也可以。
用max()+1肯定要加锁了
这样并发性就很差了