gpt4 book ai didi

mysql - 在两个 timeskip 数据库传输数据之间获取切片数据

转载 作者:行者123 更新时间:2023-11-30 22:35:59 27 4
gpt4 key购买 nike

如何获取“切片”数据并从数据库中删除数据?

我使用了两个数据库 MySQL 和 SQL SERVER。

示例:

昨天我从 MySql 传输数据到 Sql Server 大约 1000 行,然后今天我简单地删除了MySql中的5行然后再次传输。

那么,我怎样才能知道从 MySQL 中删除了哪个 ID,然后在 SQL Server 中删除它呢?

我正在使用存储过程传输数据,该存储过程会检查每个循环插入中的每个 ID。

foreach($data AS $key => $value){ $this->MsSQL->Exec('exec sp_pendaftar {ID} {NAME}'); }

我有这样的存储过程:

CREATE PROCEDURE [dbo].[sp_pendaftar] @id INT,@name varchar(45) AS DECLARE @id nvarchar(40); SET NOCOUNT ON; SET @id = (SELECT TOP 1 id FROM t_pendaftar WHERE  id = @id);
IF @id IS NULL BEGIN
INSERT INTO t_pendaftar VALUES(@id,@name);
END;
ELSE
BEGIN
UPDATE t_pendaftar SET name = @name WHERE id = @id;
END;
GO

请帮忙。

最佳答案

我不了解任何 SQL-Server 代码,但我建议通过应用程序进行复制的一部分。因此,对于更大、更动态的数据表,您可以定义一个 delete_pendafter 和一个 insert_pendafer 表(如果需要,还可以定义一个 change_pendafter)。

在从 t_pendafter 中删除之前,您只需将那些行选择到 delete_pendafter 中。这甚至可以通过触发器来实现,如果这不会使应用程序减慢太多的话。

在 SQL Server 端,我希望你有一个delete-join,这样你就可以删除删除的行。在 MySQL 中,这看起来像

DELETE orig 
FROM t_pendafter AS orig
INNER JOIN delete_pendafter AS del ON del.id = orig.id

此解决方案可以扩展到 INSERT 和 CHANGE,但必须小心完成。

您应该不时制作一份完整副本,并且您应该编写一些检查以确保数据一致。

关于mysql - 在两个 timeskip 数据库传输数据之间获取切片数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32558901/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com