我在我的应用程序中处理数据库同步。这意味着我有5个数据库,但是:
此第一个数据库保存有关已添加/删除/修改的产品到表格的信息(标志1/2/3为添加/编辑/删除和产品ID)
所以第一个数据库从SELECT生成INSERT脚本,例如:
在我的product_changes表中(addedRemovedEdited INT,productID INT)我有信息:
1,15(1 - 标志表示添加了ID = 15的产品)或
2,15(2 - 标志意味着ID = 15的产品被编辑)等。
现在使用这些信息我可以创建脚本 - 并且存在问题。
在这个妈妈我创建脚本,如:
SELECT (col1, col2, col3,...) FROM Product_Category;
string query = "INSERT INTO Table VALUES (@a,@b,@c)...";
SELECT (col1,col2,col3,...) FROM Product_price;
query += "INSERT INTO .......";
我需要在foreach表中包含有关单个产品的信息。因此,对于10个产品,我将有10 * 12(12个,因为有大约12个表关于一个产品)代码块,如INSERT INTO表1(....);插入表2(....)。
问题还在于,所有数据都需要在每个数据库中具有相同的ID - 所以我使用@@ identity并将其放入插入查询中。它必须是这种方式,因为ID = 10的产品在mainDB中名为'Keyboard'=在DB10中ID = 10的产品。
问题 - 也许你们中的一些人知道更好(因为那个不太好)解决方案我该如何创建这些脚本?就像查询一样,它将从我的字符串[] a = {“Product”,“Product_price”,“Product_category”}表中获取所有信息并生成INSERT查询,但最重要的是 - 我可以添加@@ identity。
@EDIT:我忘了。我找到了解决方案:how i can generate programmatically "insert into" data script file from a database table?
嗯,它确实生成脚本,但具有自动递增的ID。我需要以正确的顺序添加信息(如中间表),例如:
INSERT INTO Product(.....) VALUES (...);
SET @pID = @@identity FROM Product;
INSERT INTO Price (priceID,.....) VALUES (...);
SET @prID = @@identity FROM Price;
INSERT INTO Product_price (priceID, productID,...) VALUES (@prID, @pID)