我有7个数据库。数据库具有相同的表。当我编辑行或添加新行时,我想同时更新所有它们。如果其中一项交易无效,则不会更新。
我该如何更新?
答案 0 :(得分:0)
更新或修改单个表,并在不同数据库中使用同一表。这比尝试在7个数据库中的7个表中保持数据一致性要好!
答案 1 :(得分:0)
我认为下面的触发器可以为您提供sudo代码,并在失败时使用回滚事务
USE Test;--Test is one db
GO
CREATE TRIGGER afterInsert ON table AFTER INSERT
AS
BEGIN
IF @@rowcount = 0 RETURN;
UPDATE Test2.[schema_name(default schema is dbo)].Clients --here test2 is another db
SET col = col +1 -- or whatever it should be
FROM Test2.[schema_name(default schema is dbo)].Clients c
INNER JOIN inserted i ON ([your join condition])
END;
GO
答案 2 :(得分:0)
为什么需要在不同数据库中具有相同数据的相同表。恕我直言,您需要重新设计您的应用程序和数据库。 可能的解决方案:
-
begin try
begin transaction;
update db1..table1 set field1 = value1, field2 = value2 where key = @key;
update db2..table1 set field1 = value1, field2 = value2 where key = @key;
...
update dbN..table1 set field1 = value1, field2 = value2 where key = @key;
commit transaction;
end try
begin catch
SELECT
ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState, ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine, ERROR_MESSAGE() AS ErrorMessage;
if @@trancount > 0
rollback transaction;
end catch
答案 3 :(得分:0)
您可以在 已注册服务器 窗格中将所有服务器/数据库添加到一个组中(SQL Management Studio:Ctrl + A + G来显示)。在本地服务组下。
然后在新组上按右键,然后选择“新查询”。
执行查询时,它将在选定组中的所有服务器上运行。