存在..否则,我产生新的列ID,然后再试一次SQL这是更好的插入行,如果不是我目前使用下面的方法在表中插入一行时,一列不存在以前
$item_id = $this->misc_model->generateId(18);
while ($flag == false){
$this->db->where('item_id', $item_id);
$sql = $this->db->get($this->db->dbprefix('table'));
if ($sql->num_rows()){
$item_id = $this->misc_model->generateId(18);
}else{
$flag = true;
}
}
这样做可以做得更快吗?
IF NOT EXISTS(SELECT 1 FROM table WHERE item_id = $item_id)
INSERT INTO table (item_id) VALUES ($item_id)
也许创建唯一索引'ITEM_ID '并尝试插入,直到你成功...理论上这可能需要永远,并不是非常有效,但我认为上述方法容易出现竞争条件... – Yaniro 2012-02-29 09:47:25