Mysql外键和索引的疑问

tttale 发布于 2012/12/18 21:11
阅读 2K+
收藏 1

最近的一个项目是将原项目的Oracle版改成Mysql版,在使用Mysql时也到了不少问题,目前比较大的疑惑是Mysql的外键和索引。

1.为了使用事务,数据库引擎采用innodb,也使用了外键,但Mysql外键与Oracle外键一个不同点是,外键的值在关联的表中必须存在,否则插入和更新的时候会报错。例如,个人信息表person_info中的目前所在地字段current_region关联到地区维表dim_region,在前端页面表单中的目前所在地默认的value是“”,保存到Oracle中时会自动设为null,但保存到Mysql中时是“”,由于空字符串在地区维表中不存在,所以报错了。不知道有啥方法可以自动设为null,难道每次save和update时手动检查外键将“”设为null?

2.自动创建外键索引。网上搜了一下,结果有说要手动建的,也有说自动建的,@红薯 在一个问题回复说5.5版本后的Mysql不自动建索引,我用的是5.5.8还是会自动建,用navicat,sqlyog都试了,不过这个影响不是很大。

加载中
0
红薯
红薯

但Mysql外键与Oracle外键一个不同点是,外键的值在关联的表中必须存在,否则插入和更新的时候会报错。

这句话取决于你是怎么建的外键。

tttale
tttale
是指设置 on delete,on update这些事件触发?还是指create table xx( foreign key(xx) references outTable(xx) ) ?
0
红薯
红薯
你说的页面那个 "" 保存到数据库变成 null ,这个不行,你要在程序里处理哦
tttale
tttale
蛋疼菊紧了一下,已经做好修改的准备了T_T
0
BlueStragglers
BlueStragglers
Oracle版改成Mysql版 只是为了实验或学习用吧?实际项目中的问题会很多的,就算你用了#Hibernate#
tttale
tttale
实际项目中啊,还有很多问题!?现在就是用Hibernate,Mysql版还没进行太多的测试呢。
0
mark35
mark35
oracle换成mysql? 就等着折腾吧~
tttale
tttale
回复 @mark35 :世界末日快点来吧, T_T
mark35
mark35
回复 @跳梁小丑 : 换成mssql,db2,pgsql都没问题。碰上弱智的mysql你就等着蛋痛吧~ 如果项目拿来评估、当毕业论文的倒没啥问题,若是要上线运营。嘿嘿~
tttale
tttale
@_@别吓我,我可没时间一直折腾下去,我还要搞毕业论文的啊!!!
返回顶部
顶部