免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5136 | 回复: 7
打印 上一主题 下一主题

serial类型最大值的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-03-10 11:29 |只看该作者 |倒序浏览
考虑下面的情况:
create table test ( id serial primary key, name char (10) );

--insert 2 rows into the table
insert into test ( id , name ) values ( 1, 'test1' );
insert into test ( id , name ) values ( 2, 'test2' );

--delete one row from the table
delete from test where id = 2;

--then insert a new row
insert into test ( name ) values ( 'test3' );

现在数据库中数据是这样的:
id    name
1     test1
3     test3

我的需求是,在我删除id =2的那条记录后serial类型字段id最大值为1,而即将插入的默认值为3,我要得到已经插入的最大值(即为删除了的最大值2),怎么得到?

谢谢

论坛徽章:
0
2 [报告]
发表于 2005-03-10 11:36 |只看该作者

serial类型最大值的问题

问题的需求是说,要得到即将插入的值
已经插入纪录(不管是否被删除)的值中的最大值可以通过current -1得到

论坛徽章:
0
3 [报告]
发表于 2005-03-10 21:27 |只看该作者

serial类型最大值的问题

楼主的描述,看的不是很清楚。
serial类型应该是系统维护的
要得到记录数用count(*),没必要通过serial字段
如果有特殊需求就不要使用serial字段,自己定义一个字段,在应用中去维护。

论坛徽章:
0
4 [报告]
发表于 2005-03-11 09:15 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2005-03-11 09:59 |只看该作者

serial类型最大值的问题

汗。。。
是我没有表达清楚?

简单的说吧,table里有一个serial类型的字段,我只想知道它的当前值是多少
oracle里有个sequence类型,可以取nextval,currentval等操作
我问过大梦,他告诉我用
select dbinfo('sqlca.sqlerrd1') from systables where tabid = 1
但是这种方法必须先要insert一条纪录,我还查过系统表,可惜没有找到相关信息

有知道的,回复我一下
非常感谢

论坛徽章:
11
数据库技术版块每日发帖之星
日期:2016-06-25 06:20:00数据库技术版块每日发帖之星
日期:2016-06-24 06:20:00数据库技术版块每日发帖之星
日期:2016-05-03 06:20:00数据库技术版块每日发帖之星
日期:2016-04-21 06:20:00数据库技术版块每日发帖之星
日期:2016-01-23 06:20:00数据库技术版块每日发帖之星
日期:2015-12-03 06:20:00综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-19 06:20:00数据库技术版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2016-07-30 06:20:00
6 [报告]
发表于 2005-03-11 14:58 |只看该作者

serial类型最大值的问题

在TBLSPACE中,用户操作不了
oncheck -pt dbname:tabname
输出中可以看到

论坛徽章:
11
数据库技术版块每日发帖之星
日期:2016-06-25 06:20:00数据库技术版块每日发帖之星
日期:2016-06-24 06:20:00数据库技术版块每日发帖之星
日期:2016-05-03 06:20:00数据库技术版块每日发帖之星
日期:2016-04-21 06:20:00数据库技术版块每日发帖之星
日期:2016-01-23 06:20:00数据库技术版块每日发帖之星
日期:2015-12-03 06:20:00综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-19 06:20:00数据库技术版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2016-07-30 06:20:00
7 [报告]
发表于 2005-03-11 15:05 |只看该作者

serial类型最大值的问题

select ti_serialv
  from sysmaster:systabinfo
where ti_partnum in ( select partnum from sysmaster:systabnames
                        where dbsname = "stores7"
                          and tabname = "customer" );
用我的这个方法看看

论坛徽章:
0
8 [报告]
发表于 2005-03-11 17:49 |只看该作者

serial类型最大值的问题

sqlca.sqlerrd[1]是得到新插入记录的serial的值,而不是你想要的“已经插入的最大值”。

版主的SQL试过可以,选出的ti_serialv要减1才是“已经插入的最大值”。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP