佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 934|回复: 8

[讨论]系统设计问题。有关JSP+MySQL

[复制链接]
发表于 8-11-2005 05:02 PM | 显示全部楼层 |阅读模式
Table tbl_student
Field ID,Name
ID是primary key

Database如下
05AA0001   AhMeng
05AB0002   AhSeng

ID意义
前两个 指年份-05年注冊的学生
中两个 指科系-AA=IT科系,AB=MIS科系
后四个 指学生-从0001-9999的顺序


现在过程如下
1,根据table最后一个ID,产生新的ID。如05AA0003(先不管科系)。
2,充满所有资料就传去资料库。Insert into tbl_student values('05AA0003','AhLong');加入资料库。

这情况单机进行沒有问题,但如果两台PC甲和乙同时运作就有问题。
设:甲和乙都取得相同ID,但先后Insert会造成后者出现SQL Error和Connection错误。

第一个问题,这样算DeadLock吗?我也不大了解System作法,现在边做边学。

第二个问题,那一个方法可行吗?我只有一台PC不能检测,指望大家的xp。
方法一,和原本倒过来。先充好所有资料,再取ID,之后Insert。这样碰撞相同的ID机率会较小。(但我觉得还是有问题)

方法二,充好的资料(不包括ID)全部放进temp的table。设时间一次过全部insert到tbl_student。(如果现在要查最新的资料就有问题)

前两个方法都是去table取最后一个ID再产生新的ID。

方法三,有沒有方法使用mysql产生这种ID?mysql有自己增加ID的方法。(这我觉得最保险,but我的mysql造诣很浅,有谁的金手指可以可以指点。)

第三个问题,如老板不还电费,致于停电和系统中断?要如何复原系统?
在断电一杀那,会不会造成资料输入错误。这类事件如何解决。Logs这类日记可以帮忙吗?还有如何远端BackUp资料?

[ 本帖最后由 ww2020 于 8-11-2005 05:10 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 9-11-2005 08:51 AM | 显示全部楼层
大家明白我的意思吗?
回复

使用道具 举报

发表于 9-11-2005 09:04 AM | 显示全部楼层
原帖由 ww2020 于 8-11-2005 05:02 PM 发表
Table tbl_student
Field ID,Name
ID是primary key

Database如下
05AA0001   AhMeng
05AB0002   AhSeng

ID意义
前两个 指 ...


如果換科系, id 需不需要改 ?

如果不是 mysql, 就可以用 trigger

第三个问题,如老板不还电费,致于停电和系统中断?要如何复原系统?

ups 不貴, 還有就是常 backup
回复

使用道具 举报

发表于 9-11-2005 09:05 AM | 显示全部楼层
第三個方法是有的,我記得我曾經用過,但是很久以前了,

好像是一開始建立 table 的時候的 setting ....
回复

使用道具 举报

 楼主| 发表于 9-11-2005 09:17 AM | 显示全部楼层
原帖由 flashang 于 9-11-2005 09:04 AM 发表
如果換科系, id 需不需要改 ?

这沒关系,可以直接update。
原帖由 flashang 于 9-11-2005 09:04 AM 发表
如果不是 mysql, 就可以用 trigger

是什么database???

原帖由 flashang 于 9-11-2005 09:04 AM 发表
ups 不貴, 還有就是常 backup

我指如果物理性破坏等,如ups也跌坏了等。System如何复原?


原帖由 莫名奇妙 于 9-11-2005 09:05 AM 发表
第三個方法是有的,我記得我曾經用過,但是很久以前了,
好像是一開始建立 table 的時候的 setting ....

资料那里找?

Thank you
回复

使用道具 举报

发表于 9-11-2005 09:25 AM | 显示全部楼层
是什么database???
MSSQL, Oracle 有支持 trigger.

我指如果物理性破坏等,如ups也跌坏了等。System如何复原?
重要的资料应该每晚备份在 tape 或是其它 media 里.

资料那里找?
不懂是不是你要的:
MySQL 5.0 Reference Manual :: 23.2.13.3 How to Get the Unique ID for the Last Inserted Row

还有一个就是 auto increment.
不过, 个人认为如果用 MySQL, 还是自己写 function 来产生 unique key 较好.
回复

使用道具 举报

Follow Us
 楼主| 发表于 9-11-2005 11:50 AM | 显示全部楼层
原帖由 goatstudio 于 9-11-2005 09:25 AM 发表
个人认为如果用 MySQL, 还是自己写 function 来产生 unique key 较好.


我的程式就是自己产生 unique key而导致输入相同id产生错误....

一般mysql的auto increment是1,2,3,....
有法子变 A001,A002,A003,......吗? (在Mysql里...)

Thank You

[ 本帖最后由 ww2020 于 9-11-2005 11:51 AM 编辑 ]
回复

使用道具 举报

发表于 9-11-2005 01:46 PM | 显示全部楼层
原帖由 ww2020 于 9-11-2005 11:50 AM 发表


我的程式就是自己产生 unique key而导致输入相同id产生错误....

一般mysql的auto increment是1,2,3,....
有法子变 A001,A002,A003,......吗? (在Mysql里...)

Thank You[/ ...


你是产生了 unique key 过了一阵子, 才执行 insert 输入进去资料库吗?
通常, 当要输入进去资料库的那一刻, 才马上产生 unique key 然后用资料库检查, 确定没有相冲后, 然后马上执行 insert. 过程是一气呵成的.
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 9-11-2005 03:39 PM | 显示全部楼层
原帖由 goatstudio 于 9-11-2005 01:46 PM 发表
...入进去资料库的那一刻, 才马上产生 unique key 然后用资料库检查, 确定没有相冲后, 然后马上执行 insert. 过程是一气呵成的.


这就是我的第一个解決方法,但这方法还不算完全解决我的问题。
但可以把错误机率減少许多,也得付出过多的效率。

Thank You

我也不该撞牛角尖,先做之后再改好了,多谢goatstudio的指教。
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 21-9-2024 03:43 PM , Processed in 0.122991 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表