社区
数据库及相关技术
帖子详情
记录插入问题: 对数据库的逻辑记录顺序中如何"插入"一条记录?!
BCB
2001-06-26 09:07:57
物理记录中是很难实现记录插入功能的,只有借助于索引了,
但下面这个情况常常遇到:
顺序是我录入的先后顺序(台帐中的先后顺序),在我录入的过程中,
可能录丢了某条记录,当然要设法补到原记录位置,,这就是"插入"功能,
象这种情况,大家怎么去处理?
肯定要借助于索引了,可偏偏又没有合适的关键字对应于录入的先后顺序.
有无高招?!
...全文
866
50
打赏
收藏
记录插入问题: 对数据库的逻辑记录顺序中如何"插入"一条记录?!
物理记录中是很难实现记录插入功能的,只有借助于索引了, 但下面这个情况常常遇到: 顺序是我录入的先后顺序(台帐中的先后顺序),在我录入的过程中, 可能录丢了某条记录,当然要设法补到原记录位置,,这就是"插入"功能, 象这种情况,大家怎么去处理? 肯定要借助于索引了,可偏偏又没有合适的关键字对应于录入的先后顺序. 有无高招?!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
50 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaoyu
2001-06-28
打赏
举报
回复
在数据库设计的时间,增加个时间字段,如datetimestamp
以此为索引,就可以插入了。插入时构造个时间,就行了
不是很简单的//hehe
jack_twb
2001-06-28
打赏
举报
回复
你说的顺序已经有商业含义了,应该用程序保证,即在表中加一个字段,
并且用程序来维护。最好不要用数据库来实现。
BCB
2001-06-28
打赏
举报
回复
to xiaoyu():
插多了,就没有中间"时间"可插了,你同样会遇到极端情况;
我说哑了,也没人听得进去.
lanchat
2001-06-28
打赏
举报
回复
用链表可以解决
lanchat
2001-06-28
打赏
举报
回复
谁能告诉我win98下的vtoolsd开发工具包到哪里下载?email: mylanchat@163.com
BCB
2001-06-27
打赏
举报
回复
并没有复杂的算法: 上、下记录编号相加/2为新插入的顺序编号,
稍复杂的部分就是处理极端情况(不能不考虑呀)
给分了!
BCB
2001-06-27
打赏
举报
回复
!
BCB
2001-06-26
打赏
举报
回复
求平均值的办法,所以在同一处插入约 log2(Step)次,就要面临小调整,
若取step=100,同一处6次左右就要调整了,step取1000,10次
根据需要了
孩皮妞野
2001-06-26
打赏
举报
回复
>>BCB
可以, 与这个方法实出一辙:
SeqNo SubNo Name
1 0 V
2 0 M
3 0 J
4 0 K
5 0 L
6 0 N
步长的选择比较关键, 我觉得对一般的应用而言, 100 足够, 当然, 越大需要调整的可能九越小, 1000也不错, 绝对可以解决你的问题了。(建议100)。
BCB
2001-06-26
打赏
举报
回复
我的想法是,就是用整数做顺序编号,编号之间间隔较大,比如取step=1000,
每当插入一条时,取上下两条号的平均值做为新的顺序号,
坏的情况(间隔已为1):
从要插的位置往下找有间隙的顺序号,找到后,求新的平均间隔,
倒着往上调整顺序号,就可插入;
最极端坏的情况,到末尾间隔都为1就是大调整了, 间隔号改为step,
大家分析一下,怎样?!
孩皮妞野
2001-06-26
打赏
举报
回复
顺序号不需要连续, 尽管删除, 不需要整理。
因为取数时是:
select * from mytable order by seqno, subno;
不联号根本不是问题。
BCB
2001-06-26
打赏
举报
回复
to songhtao(三十年孤独):
大型的用于数据查询的数据库的确顺序不重要,
但我偏偏要有录入顺序,企业里的报表全都有顺序,没有顺序就是不行
「已注销」
2001-06-26
打赏
举报
回复
顺序号需要整理的
如果将来删除
所以我建议尽量避免使用这个东西
@_@
wjzhuang
2001-06-26
打赏
举报
回复
时间取当天时间(需要的话好可以取到小时)
当前日期+顺序号
如:
20010626+100
20010626+101
20010627+100
20010627+101
孤独兄说的货物编号据我所知就是以当前的日期加上一个顺序号来生成的
孩皮妞野
2001-06-26
打赏
举报
回复
BCB,
比你想象的要快, 而且这个工作在后端作, 速度飞快。 你可以用一个大表作测试, 比你想象得要快。
如果你还是觉得不妥, 那就用这样吧
SeqNo SubNo Name
1 0 V
2 0 M
3 0 J
4 0 K
5 0 L
6 0 N
插入时把 SubIndex 加1, 比如要插在J前
SeqNo SubNo Name
1 0 V
2 0 M
2 1 x
3 0 J
4 0 K
5 0 L
6 0 N
可以满足你的要求吗? 等subindex满了(==max(unsigned))在调整SeqNo.
我不懂电脑
2001-06-26
打赏
举报
回复
据我所知通常录入顺序是没有意义的,如果是货物通常都有货物编号,编号作关键码。如果是记账则可以通过时间查找。
BCB
2001-06-26
打赏
举报
回复
to ALNG(至饶远势波千倾,渐满清辉月上弦):
" 先把>=1001的序号往后挪一位,
update MyTable set SeqNo =SeqNo+1 where SeqNo >=1001; "
记录不太多时较简单,
但记录较多时,从算法上来讲效率不高,
每当在最上端插入一条,所以记录的顺序号都要集体加1(株联太多);
to wjzhuang:
时间说穿了也是数字,插多了,也会相同的,
新插入的记录的'时间'怎么定呢?! 时间不定性更厉害
BCB
2001-06-26
打赏
举报
回复
to ALNG(至饶远势波千倾,渐满清辉月上弦):
" 先把>=1001的序号往后挪一位,
update MyTable set SeqNo =SeqNo+1 where SeqNo >=1001; "
记录不太多时较简单,
但记录较多时,从算法上来讲效率不高,
每当在最上端插入一条,所以记录的顺序号都要集体加1(株联太多);
to wjzhuang:
时间说穿了也是数字,插多了,也会相同的,
新插入的记录的'时间'怎么定呢?! 时间不定性更厉害
BCB
2001-06-26
打赏
举报
回复
to ALNG(至饶远势波千倾,渐满清辉月上弦):
" 先把>=1001的序号往后挪一位,
update MyTable set SeqNo =SeqNo+1 where SeqNo >=1001; "
记录不太多时较简单,
但记录较多时,从算法上来讲效率不高,
每当在最上端插入一条,所以记录的顺序号都要集体加1(株联太多);
to wjzhuang:
时间说穿了也是数字,插多了,也会相同的,
新插入的记录的'时间'怎么定呢?! 时间不定性更厉害
孩皮妞野
2001-06-26
打赏
举报
回复
确实, 这种无聊的行为应该受到抵制和谴责!
加载更多回复(30)
MySQL下并发重复
插入
的唯一性
问题
1. 背景 在高并发场景
中
,经常会遇到并发重复数据
插入
,没有唯一索引(比如有
逻辑
删除)却要保证唯一性的
问题
。比如分布式告警计算
中
,多个计算实例同时计算出同一个告警并同时
插入
相同的告警
记录
到
数据库
中
,这时应该只
插入
一条
记录
。本文分析了在MySQL的InnoDB引擎
中
解决这类的
问题
的4种思路和相关方案。 2.
问题
提出 InnoDB下,两个事务同时
插入
同
一条
数据,如何保证只有
一条
数据被
插入
? ...
ORACLE向表
插入
记录
的
顺序
和读取
记录
的次序一样吗??
向表
插入
记录
的
顺序
和读取
记录
的次序一样吗?? [
问题
点数:30分,结帖人wh62592855] 收藏帖子 回复 右鞋左穿 结帖率 100% SQL code? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
【
数据库
三】insert
插入
多条数据,对表的操作,约束,存储引擎,事务
数据库
三一、insert语句可以一次
插入
多条
记录
二、对表的操作1.快速创建表2.将查询结果
插入
到一张表当
中
3.快速删除表
中
的数据-truncate4.对表结构的增删改三、约束1、什么是约束?2、约束包括哪些?3、非空约束:not null4、唯一性约束: unique5、主键约束(primary key,简称PK)非常重要6、外键约束(foreign key,简称FK)非常重要四、存储引擎1、什么是存储引擎2、怎么给表添加/指定“存储引擎”3、怎么查看mysql支持哪些存储引擎4、关于mysql常用的存储引
【sql】关于
数据库
存储json类型存在的
问题
,以及
数据库
多条数据合并
一条
数据的sql使用
问题
今日和大家分享下关于
数据库
存储json类型存在的
问题
,以及
数据库
多条数据合并
一条
数据的sql使用
问题
等。 最近在公司接收了一个新系统,需要在原来的基础上添加一些字段,以及相关统计信息做出一定的修改。需求评审会议开的倒不少,最后要面对后端代码的也是自己孤身一人。看别人的代码给我的第一感觉就是乱,不过在
中
能学到上个人处理
问题
的
逻辑
,可以学习学习,也能提升一下自己。 要处理的第一个
问题
就是对
数据库
json字段的子类按照指定规则进行排序,然后我就在
插入
的时候先排序再
插入
,然后展示的时候使用 Map<Strin
mysql
数据库
语句
插入
_MySQL之
插入
数据(添加数据)-INSERT
基本语法:INSERT 语句有两种语法形式,分别是 INSERT…VALUES 语句和 INSERT…SET 语句。1、INSERT...VLAUES语句INSERT VLAUES的语法格式如下:INSERT INTO [[,,...]]VLAUES(值1)[....(值n)];语法说明如下。:指定被操作的表名。:指定需要
插入
数据的列名。若向表
中
的所有列
插入
数据,则全部的列名均可以省略,直接采用 ...
数据库及相关技术
1,178
社区成员
18,939
社区内容
发帖
与我相关
我的任务
数据库及相关技术
C++ Builder 数据库及相关技术
复制链接
扫一扫
分享
社区描述
C++ Builder 数据库及相关技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章