作者GoalBased (Artificail Intelligence)
看板Database
标题[SQL ] 资料更新
时间Tue Jul 8 08:44:07 2014
资料库名称:mssql
资料库版本:2012
内容/问题描述:
我有一个表单给使用者填写 ex:
表单编号
5 铅笔 10元
5 原子笔 15元
5 橡皮擦 20元
不过这个表单使用者是可以修改的,有可能使用者只是改了铅笔的价格,
但也有可能是新增一个铅笔盒 50元,又或者是把橡皮擦这笔资料删掉,
这种状况最简单的做法单然是把表单编号5的资料全砍了,
之後新的表单资料再给予编号5,也有其他作法,例如用更新的,
想请问一下,这种状况用甚麽做法比较好,优缺点又是甚麽?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 211.23.209.100
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Database/M.1404780250.A.0DB.html
1F:推 NullLife:再多加一个序号就好啦 然後把编号+序号设为unique 07/08 09:43
2F:→ NullLife:其实也不用 反正有名字可以识别是哪一笔资料 或用seq 07/08 09:45
不太清楚你说的方法,可以请你讲的详细点吗?
3F:推 up9cloud:站在使用者立场,做任何一件事都即时存取更新最好。 07/08 10:23
4F:→ up9cloud:缺点就是code会复杂些,花的时间多一些... 07/08 10:24
这个内容时做对使用者完全没有影响阿,有影响的只是程式怎麽更新资料,
或许你有点误会我的意思
※ 编辑: GoalBased (60.249.104.106), 07/08/2014 12:25:09
5F:→ bohei:我看不太懂你问题的核心是什麽@@ 07/08 12:41
给使用者填写的表单如下:
产品 价格
A 10
B 15
C 20
存到talbe的状况会是:
编号 产品 价格
1 A 10
1 B 15
1 C 20
但是当使用者更改这个表单时,该如何维护资料库的正确性,各种方法的优缺点
※ 编辑: GoalBased (60.249.104.106), 07/08/2014 12:47:48
6F:→ bohei:纯粹用UPDATE的最快吧? 先DELETE再INSERT等於两次指令了 07/08 12:54
7F:→ bohei:你说的批次DELETE再INSERT的情况应该是适用於整个table要 07/08 12:57
8F:→ bohei:重新建立,可直接DROP,然後INSERT,最後再建立INDEX,省去逐笔 07/08 12:58
9F:→ bohei:INSERT还要排序INDEX的时间 07/08 12:58
10F:→ bohei:不知道你考虑要不要使用UPDATE的点在哪,因为直观就是直接 07/08 13:01
11F:→ bohei:UPDATE吧,不妨把你顾虑的点说出来,可以讨论讨论 07/08 13:01
因为如果本来五笔资料,修改後还是五笔,那update没有问题,
但是修改後变成6笔,那新的那一笔不就是要insert吗
※ 编辑: GoalBased (60.249.104.106), 07/08/2014 15:03:47
12F:→ bohei:使用者修改的表单会有一个TEMP做记录吗? 如果会的话,可以考 07/08 15:34
13F:→ bohei:虑将temp与实际资料的table做MERGE 07/08 15:35
14F:→ bohei:至於你提到的新资料要INSERT,这是一定要的阿~~~~ 07/08 15:35
15F:→ bohei:但可以用UPDATE的就用UPDATE,可以省去重复DELETE,INSERT 07/08 15:36
16F:→ bohei:排INDEX的时间搂~ 07/08 15:36
17F:→ bohei:再请问一下,你觉得整个DELETE再INSERT,这样的程式码可以应付 07/08 15:37
18F:→ bohei:所有情况,所以才偏向这样的做法吗XD 07/08 15:38
我是说,整个删掉再写是最简单的方法阿,当然这样有缺点,所以我才会想问
其他做法,至於你说的TEMP是可以取出来的
※ 编辑: GoalBased (60.249.104.106), 07/08/2014 15:59:19
19F:→ bohei:那MERGE应该是最简单又最快速(效能)的做法吧..自动帮你比对, 07/08 16:08
20F:→ bohei:条件符合(重复)使用UPDATE,无符合条件资料(新增)使用INSERT 07/08 16:09
关键字是MERGE吗? 资料库新手,还不够熟悉,我会去查一下的,谢谢!!
※ 编辑: GoalBased (113.61.164.195), 07/08/2014 18:40:23
21F:→ up9cloud:整份上传跟单项修改就异动,资料多时差别真的蛮大的... 07/09 02:00
22F:→ up9cloud:我不觉得对使用者没影响,供你参考噜... 07/09 02:12