我有一个
main
具有主键的表(
ÃD
linked
一个。
主要
ID | name
=========
1 | foo
2 | bar
3 | loo
4 | zoo
main_id
=======
1
1
2
2
主要的
(1,2)在
链接
桌子。
现在从同一结构导入新数据:
导入数据
ID | name
=========
1 | new_foo
2 | new_bar
3 | new_loo
4 | new_zoo
main_id
=======
3
4
3
1
在导入过程中
ID
是的
主要的
表将获得新的ID(由脚本完成)
ID | name
=========
1 | foo
2 | bar
3 | loo
4 | zoo
5 | new_foo
6 | new_bar
7 | new_loo
8 | new_zoo
但是
main_id
main_id
=======
1
1
2
2
3 => should be 7
4 => should be 8
3 => should be 7
1 => should be 5 => * comment below
*我不能简单的更新
链接
UPDATE linked SET main_id = 5 WHERE main_id = 1
主要的
?
-
我可以给这个数字加一个高的数字
主id
UPDATE linked SET main_id = main_id + 10000000
-
-
应用真实ID
UPDATE linked SET main_id = %realID WHERE main_id = %importedID
-
把我的临时身份证恢复原样。
UPDATE linked SET main_id = main_id - 10000000 WHERE main_id > 10000000
问题很明显:如果id高于10.000.000或者临时id高于BIGINT(9223372036854775807),那么这个方法就不起作用(或者根本不起作用)。
链接
我肯定有一个“最佳实践”的方法。