Database 板


LINE

※ 引述《forgmonkey (悲情城市之悲情程式猿)》之铭言: : 正遇到问题呢... : 想说ptt有DB板 没想到居然刚开板ㄟ... 酷毙了!! : 恭贺会研究用哪种键盘打java快的PSMonkey成为版主 : 同是monkey推!!! : 好啦.. 以下是问题: : mysql下 primary key可以设定auto increase : 他实作方式是会纪录一个数字 : 每次Insert一笔资料就会拿这个数字当primary key 并且递增之 : 但是我遇到一个问题... 今天我新增10个资料 : 就有主键1~10的这几笔资料 : 然後删掉4 ,6, 剩下8笔 : 然後再新增一笔 我希望他会成为主键4而不是11 : 能够在SQL的语法那边就解决掉嘛? : 还是必须每次插入都要用程式检查最小的空栏是哪一个? : 不过我想这种方式因该load太大吧? : //以下有点题外话 : 会有这个困难 起因是比方这个资料表叫A 有另外一个资料表B靠A的主键与之关联 : 如果A4被删掉 那所有B中和a4关联的全部变成无主孤魂啊 : 我想到的另一种方式是... 乾脆删掉a4时,顺便杀掉b中和a4关联的东西... 看来似乎很多人都不晓得mysql有foreign key constrain喔? 在建立资料表的时候只要选用Innodb作为资料表格式(很多状况下新建立 的资料表格式是myisam,这种格式就没有foreign key constrain了), 不但有transaction功能也有foreign key constrain,而且这从mysql 3.2x 的时代就有了(至少两三年以上),不是最近的事情。 你所说的B资料表的记录参照到A资料表,当A资料表某笔记录被删掉,造成 B资料表中参照到该被删资料的记录都变成无主孤魂的问题,就是要靠 foreign key constrain来处理(当然你也可以在应用程式的层级自己写 程式码处理这个问题,但是在资料库层级做好各资料表之间的关连与限制 是好的,而且省事多了)。设定正确的话,你可以有以下选择 1. 当A4被删掉,B资料表中参照到A4的资料也会被自动删除(on delete cascade) 如果有C资料表参照到B,C中参照到B的资料也会被连动自动删除。 2. 当A4被删掉,B资料表中参照到A4的资料关连的栏位值会被自动设为null (on delete set null) 3. 当B资料表中有参照到A4的资料时,则不允许删除A4这笔记录(on delete restrict) 硬要删除A4会有错误讯息。 这些功能可以让你确保各资料表之间的完整关连性,不会有孤儿资料存在。 而且不用自己写一堆程式码来维持这些关连,实在是必备良药。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.154.199.81
1F:推 drkkimo:mysql的foreign key好像是 5.0以後才有的~ 06/24 14:09







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP