为已经添加好的数据表添加外键:
语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)
//FK_ID是外键的名称
/*
CREATE TABLE `tb_active` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `user_id_2` (`user_id`),
CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
*/
因为一个MYSQL查询语句只使用一个索引,当你这个语句的WHERE有两个字段作为条件的话,如果使用两个字段联合起来建立一个索引,性能和高得多。反之,如果是两个字段分别建立的索引,MYSQL只能使用其中一个,另外一个用顺序查询。http://hi.baidu.com/cha369/blog/item/cdfc3001f239320f1d9583c5.html
确实,只能自己封装一个方法来拼sql,比如:
$arr = array('z'=>'ccc','w'=>'ddd')doInsert('aaa', $arr)
doInsert('bbb', $arr)
function doInsert($tbname, $fields) {
$sql = 'insert into ' . $tbname . '('
$sqlfield = ''
$sqlval = ' values('
foreach ($fields as $field => $val) {
if (!empty($sqlfield)) {
$sqlfield .= ','
$sqlval.=','
}
$sqlfield .= $field
$sqlval.='\'' . str_replace('\'', '\'\'', $val) . '\''
}
// 执行拼接好的sql
$this->db->query($sql)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)