【发布时间】:2021-03-17 10:35:47
【问题描述】:
目前我在 SQL 数据库中有 2 个表:表 A 和表 B 我正在使用语法
Insert Into TABLE B
Select id, col, col, col......
From TABLE A
Where id NOT IN (SELECT id from TABLE B)
End;
这种语法效果很好。但是,如果我删除表 B 中的记录,则上述代码将作为回报,将删除的记录插入表 B。我不希望这种情况发生。是否有另一种方法可以插入不在表 B 中的记录“仅一次”。它基本上应该忽略所有其他先前插入的插入到表 B 中的记录。如果它被删除,则不应再次插入。
我希望它只插入添加到表 A 中的新记录。
【问题讨论】:
-
您能否在单独的表中跟踪已删除行的 ID,从而能够排除重新插入,或者跟踪表 A 中最后插入的 ID,只插入表 B 中的新行更高。或者使用
Trigger插入表B -
您可以添加另一个
not in/not exists谓词来检查表本身的id (B)。或者在逻辑上而不是物理上使用标志删除