新足迹

 找回密码
 注册

精华好帖回顾

· 终于买到了理想的corolla,填坑完毕,欢迎加分助我早日摆脱光脚族 :) (2008-5-15) distantmusic · 2012悉尼新年烟花 (2012-1-2) sinkai
· 新手报到:我眼中的新西兰 (2010-3-3) yann · 哀伤的基督城 (2012-4-9) hr6970
Advertisement
Advertisement
查看: 1896|回复: 19

如何实现对数据库记录ID的控制 [复制链接]

发表于 2013-9-3 21:34 |显示全部楼层
此文章由 easter 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 easter 所有!转贴必须注明作者、出处和本声明,并保持内容完整
想在mysql数据库中实现以下效果

在一个表中保存两种类型的数据,类型1数据的ID从1开始自动增长,类型2数据的ID从100000开始自动增长

有简单的实现办法吗?

Advertisement
Advertisement

发表于 2013-9-3 21:37 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
为什么要在一个表里存两种数据呢?

发表于 2013-9-3 21:43 |显示全部楼层
此文章由 easter 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 easter 所有!转贴必须注明作者、出处和本声明,并保持内容完整
kawara 发表于 2013-9-3 20:37
为什么要在一个表里存两种数据呢?

主要是为了简化程序与数据库

发表于 2013-9-3 21:46 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
easter 发表于 2013-9-3 20:43
主要是为了简化程序与数据库

非要这样主键在程序里生成不好么

发表于 2013-9-3 21:47 |显示全部楼层
此文章由 easter 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 easter 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这两种数据的结构基本一致,与之相关的表有几十个,相关程序也非常多
如果把第二种数据新建一个表,与之相关的表都要重建,程序有几十个地方要改。
如果能放到一个表,就是个自然过渡,工作量小多了

发表于 2013-9-3 21:53 |显示全部楼层
此文章由 easter 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 easter 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 easter 于 2013-9-3 20:54 编辑
kawara 发表于 2013-9-3 20:46
非要这样主键在程序里生成不好么


这样主键的类型需要改变, 第三方程序就会工作不正常了
Advertisement
Advertisement

发表于 2013-9-3 21:54 |显示全部楼层
此文章由 ericlgq 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 ericlgq 所有!转贴必须注明作者、出处和本声明,并保持内容完整
easter 发表于 2013-9-3 20:47
这两种数据的结构基本一致,与之相关的表有几十个,相关程序也非常多
如果把第二种数据新建一个表,与之相 ...

一般是专门用一个列来标记不同的数据类型,但是主键不做区分吧?
利用主键来区分数据类型真没见过。。。

发表于 2013-9-3 21:58 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
easter 发表于 2013-9-3 20:53
这是个办法, 主键的类型需要改变

如果能不改变主键类型能实现就更好了,因为是‘二次开发’ ...

数据库自动生成的主键,surrogate key不应该有任何business meaning

你要区分,显然这个有business usage

如果是我的话,主键我会不动,会加个optional的字段,来区分

发表于 2013-9-3 21:59 |显示全部楼层
此文章由 easter 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 easter 所有!转贴必须注明作者、出处和本声明,并保持内容完整
ericlgq 发表于 2013-9-3 20:54
一般是专门用一个列来标记不同的数据类型,但是主键不做区分吧?
利用主键来区分数据类型真没见过。。。 ...

因为这个主键是显示给用户的
二次开发,不是从头规划,所以才有这样的需求

发表于 2013-9-3 22:25 |显示全部楼层
此文章由 easter 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 easter 所有!转贴必须注明作者、出处和本声明,并保持内容完整
kawara 发表于 2013-9-3 20:58
数据库自动生成的主键,surrogate key不应该有任何business meaning

你要区分,显然这个有business usag ...

在原来的程序,id显示给用户, 并且在那个界面只能看到第一种数据
现在每插入一个第二种类型的数据,显示给用户的id,就会漏掉一个,造成ID不连续
其实没什么,就怕用户误会是程序出错

发表于 2013-9-4 10:44 |显示全部楼层
此文章由 jaszhou 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 jaszhou 所有!转贴必须注明作者、出处和本声明,并保持内容完整
可以用trigger,在每一条新记录后面自动增加新的ID字段,它的值是原ID + 100000
Advertisement
Advertisement

发表于 2013-9-4 10:58 |显示全部楼层
此文章由 stevenbian 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 stevenbian 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这你必须分成2个表啊,把原来的表改成view,就不用改很多程序了。

发表于 2013-9-4 11:16 |显示全部楼层
此文章由 marklan001 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 marklan001 所有!转贴必须注明作者、出处和本声明,并保持内容完整
stevenbian 发表于 2013-9-4 09:58
这你必须分成2个表啊,把原来的表改成view,就不用改很多程序了。

同意,then use a trigger instead of the view-insert

评分

参与人数 1积分 +4 收起 理由
stevenbian + 4 偶对你的景仰如滔滔江水

查看全部评分

发表于 2013-9-4 12:53 |显示全部楼层
此文章由 easter 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 easter 所有!转贴必须注明作者、出处和本声明,并保持内容完整
jaszhou 发表于 2013-9-4 09:44
可以用trigger,在每一条新记录后面自动增加新的ID字段,它的值是原ID + 100000
...

这个能保证两组id连续吗?

评分

参与人数 1积分 +1 收起 理由
stevenbian + 1 你太有才了

查看全部评分

发表于 2013-9-4 14:00 |显示全部楼层
此文章由 easter 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 easter 所有!转贴必须注明作者、出处和本声明,并保持内容完整
easter 发表于 2013-9-4 11:53
这个能保证两组id连续吗?

恕我愚钝 ,什么状况?

发表于 2013-9-4 14:40 |显示全部楼层
此文章由 stevenbian 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 stevenbian 所有!转贴必须注明作者、出处和本声明,并保持内容完整
easter 发表于 2013-9-4 13:00
恕我愚钝 ,什么状况?

真不懂啊?无语了,人家忽悠你呢
签名不可外链
Advertisement
Advertisement

发表于 2013-9-4 14:45 |显示全部楼层
此文章由 easter 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 easter 所有!转贴必须注明作者、出处和本声明,并保持内容完整
stevenbian 发表于 2013-9-4 13:40
真不懂啊?无语了,人家忽悠你呢

虽然看起来像是,但万一背后有什么伟大的idea呢?所以追问一下喽
头像被屏蔽

禁止访问

发表于 2013-9-4 14:51 |显示全部楼层
此文章由 dlcat 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dlcat 所有!转贴必须注明作者、出处和本声明,并保持内容完整
主键最好别动,另加一列作区分吧。

发表于 2013-9-4 14:55 |显示全部楼层
此文章由 easter 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 easter 所有!转贴必须注明作者、出处和本声明,并保持内容完整
好吧,既然没有捷径

发表于 2013-9-4 16:19 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
以前以系统用过类似战略,结果前半段running out of id!

建议用bool来区分,用serversidescript改动客户看得见的id

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部