更改ID和更新表

时间:2010-03-11 14:53:37

标签: database

我们正在尝试将两个不同的数据库放在一起,但两个数据库都使用相同的ID。不同的信息,但我们将有两个具有相同ID的用户。有没有办法可以在一个数据库中更改ID,然后使用该ID更新每个表?

4 个答案:

答案 0 :(得分:2)

如果您没有依赖关系,我会想到一个非常简单的解决方案:

伪代码:

SELECT max(id) FROM database1.tablename
// Returns 10389

UPDATE database2.tablename SET id = (id + 10389)
// Sets 1st record to 10390
//      2nd record to 10391
//      3rd record to 10392
......

答案 1 :(得分:0)

如果它是一个自动增量id列,你可以这样做:


SELECT //(columns except id)
INTO new_table_name [IN otherdatabase]
FROM old_tablename

和tadaa!

答案 2 :(得分:0)

我们正在开发类似这样的项目,答案是临时表。对要插入的数据进行分级,并为新ID添加一列。插入父记录并在登台表中更新新的id(SQL server对输出子句有帮助,我不知道其他dbs)。现在,当您插入子记录时,您将使用新ID而不是旧ID。另一种方法是将旧id的列添加到父表。在插入子表时使用它来连接以获取新的id。迁移所有数据后,请删除该列。

答案 3 :(得分:0)

假设数据库1或数据库2中没有进行其他处理,请尝试尝试:

1)在数据库1中获取最大ID

2)在数据库2中,删除与此ID相关的所有外键

3)在数据库2中,在ID是自动增量/标识的表上,您必须添加新的列ID2并用UPDATE YourTable SET ID2=ID+{max ID from database 1}填充它,然后删除原始ID列,然后重命名ID2到ID

4)在数据库2中,对于将此ID用作FK的所有其他表,使用UPDATE OtherTable SET ID=ID+{max ID from database 1}更改ID

5)在数据库2中,恢复外键以验证数据

6)在数据库2中,将数据导出到文件

7)在数据库1中,从数据库2导入文件