【发布时间】:2021-07-01 03:48:20
【问题描述】:
我有一种情况,我在本地数据库中有一个表,该表必须始终与服务器中的数据库保持同步。服务器数据库中的记录由第三方更新/删除/插入,我必须保持本地数据库与服务器同步。
我的本地机器在服务器中接收当前数据。假设服务器数据库有 4 条记录,我的本地机器接收这 4 条记录,我必须使用主键更新我的本地数据库。
当有人删除服务器数据库中的一条记录(只剩下3条记录)时,它只发送剩余的记录(本地数据库只接收3条记录)。
如何找到删除的记录。 (本地机器接收要使用的主键)。
我尝试了以下过程,但它似乎在服务器中找到了额外的详细信息,而不是删除的。
PROCEDURE CheckDeletedRecord ( primarykeyRecieved IN varchar, toDeletedPrimarykey OUT varchar) AS
vStorePrimaryKey VARCHAR2(45);
BEGIN
SELECT t.primarykeyOfTable INTO vStorePrimaryKey FROM tableName t where t.primarykeyOfTable = primarykeyRecieved
IF vStorePrimaryKey = '' THEN
toDeletedPrimarykey := primarykeyRecieved ;
END IF;
END CheckDeletedInfections;
【问题讨论】:
-
使用存在/不存在的 sql 会有所帮助。
-
exist / not exists 适用于两个表。我只有一张表,其他记录在光标中
-
你需要在
EXCEPTION WHEN NO_DATA_FOUND中分配给toDeletedPrimaryKey -
为什么不截断表格然后插入所有新行。