对于我的表中的每条记录,都有一个ID,然后是Public_ID。
ID是一个自动递增的int。Public_ID是ID中的INT的MD5散列。
要生成此Public_ID,我通常会获取与ID的值匹配的插入ID,然后生成Public_ID并更新id与插入ID匹配的记录。
有没有一种更有效的方法来生成Public_ID,而不必计数,或者在插入后更新?
谢谢,彼得
发布于 2011-03-19 09:40:02
如果您打算使用MD5对ID进行哈希处理,那么您最好生成一个GUID。
发布于 2011-03-19 09:27:24
当然有。对ID以外的任何内容进行散列以获取Public_ID。可以使用当前时间戳、表中的其他列、环境数据或这些数据的任意组合。
发布于 2011-03-19 09:41:33
一般插入行的ID在插入完成后才可用,这意味着您不能执行以下操作:
insert into table (pk,hash)值(null,last_insert_id());
您将只获得在此之前执行的任何插入的ID,而不是当前插入的ID。同样,您不能使用触发器来捕获它并更新表,因为触发器不能更改新行。
因此,看起来您陷入了插入/获取/更新周期。
https://stackoverflow.com/questions/5359379
复制相似问题