获取插入的ID如果插入发生REPLACE INTO

问题描述:

我正在使用REPLACE INTO更新mod_id是唯一/主键的行。如果它被插入,我想知道mysql_inserted_id()获取插入的ID如果插入发生REPLACE INTO

我尝试这样做:

$query_2 = $DB->query('REPLACE INTO mods (mod_id, group_id, css) VALUES (0, 4585, "css string")'); 
$inserted_id = mysql_insert_id(); 

但我不断收到的0$inserted_id即使插入happend。

+1

mod_id是你的主要吗? –

+1

是mod_id AUTO_INCREMENT吗? – Hatef

+0

嗯谢谢你们在secon mode_id不是auto_incrment中找到了它。我解决这个问题! Btw有无论如何使文本字段主/唯一? – Noitidart

我觉得,最好用INSERT... ON DUPLICATE KEY UPDATE。原因在于REPLACE总是删除旧行,然后插入新行。 INSERT ... ON DUPLICATE KEY UPDATE时,尝试尽可能更新现有行(基于主键或唯一键)。你可以last_insert_id()

+0

谢谢cjg,我的问题是,我想使独特的领域是一个TINYTEXT领域,我不能使它独特,这可能吗? – Noitidart

+0

文本/ blob字段的用途是不同的,并且不能具有唯一的索引。使列成为VARCHAR(100)左右,并且可以添加索引。同时制作如此独特的长字符串也不会带来好的表现。我会建议验证唯一性检查是在应用程序代码中,而不是在数据库中 – georgecj11