我在3个本地分支机构中有一个本地Postgres服务器,我需要将三个同步到一个中央数据库我在PostgreSQL文档中尝试了数据库复制它为Master-Master Sync工作但是问题是
在我的数据库中,我有外键,因此在同步时,如果来自Slave数据库的PK具有已存在于master数据库中的id,则它将具有序列中的新id,则所有外键记录仍具有旧ID
所以,如果你能帮助我解决这个或一个好的教程,甚至是另一个解决方案
提前致谢
答案 0 :(得分:0)
我轻松地添加外键约束只需制作外键sql命令的txt文件并给出';'在每个sql命令之后并使用下面的代码它完美地运行...
private void FunAddForeignKeys()
{
SqlConnection clientConn = new SqlConnection(lconString);
if (clientConn.State == ConnectionState.Closed)
clientConn.Open();
System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(GetSql("ForeignKeyQueries.txt"), clientConn);
try
{
Command.ExecuteNonQuery();
MessageBox.Show("Foreign keys added");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
// Closing the connection should be done in a Finally block
clientConn.Close();
}
}
private string GetSql(string Name)
{
try
{
// Gets the current assembly.
Assembly Asm = Assembly.GetExecutingAssembly();
// Resources are named using a fully qualified name.
Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + Name);
// Reads the contents of the embedded file.
StreamReader reader = new StreamReader(strm);
return reader.ReadToEnd();
}
catch (Exception ex)
{
MessageBox.Show("In GetSQL: " + ex.Message);
throw ex;
}
}
答案 1 :(得分:0)
在我的数据库中,我有外键,因此在同步时,如果来自Slave数据库的PK具有已存在于master数据库中的id,则它将具有序列中的新id,则所有外键记录仍具有旧ID
将原始分支作为主键的一部分。然后,您可以确保始终如一地跟踪所有内容。这是一个多列主键确实闪耀的区域。