【问题标题】:Advice on removing records completely from a database关于从数据库中完全删除记录的建议
【发布时间】:2019-06-27 19:33:51
【问题描述】:

我正在寻找一些关于从数据库中完全删除多条记录(大约超过 3000 条)的最佳方法的建议。出于 GDPR 的原因,我被分配了一项从我们的数据库中删除旧记录的工作。

但是,这是一个我没有太多知识的数据库,也没有关于如何将表连接在一起的文档、ERD 等。

我设法计算出需要删除记录以从数据库中完全删除详细信息的表,大约有 24 个表需要删除记录。

我有一个需要删除的 ID 号列表,因此我正在考虑使用 ID 列表创建一个临时表,然后创建一个存储过程来循环遍历临时表。然后对 24 个表中的每一个进行检查,看看它是否包含与 ID 号相关的记录,然后是否删除它们。

有谁知道是否有更好的方法来删除这些记录?

【问题讨论】:

  • 基本上,您想做“从 table_name 中删除 some_id = [some_parameter]”。为什么在这里使用临时表而不是直接从数据库中删除?
  • 由于您不了解您的数据库,可能先对其进行建模,然后创建一个备份,这样您就可以确保不会犯不可恢复的错误。接下来是@SendhilkumarAlalasundaram 所说的
  • 因为我有大约 3000 条不同的 ID 记录要删除,所以我打算使用一个临时表,这样我就可以遍历 3000 个奇数并使用变量来删除记录。我一直在尝试为数据库创建 ERD,以尝试弄清楚它们是如何连接在一起的,但我无法 100% 确定它们是正确的。

标签: sql sql-server-2014


【解决方案1】:

我会使用一个表变量并联合所有:

declare @ids table (id int primary key)

insert into @ids (id) 
select 1 union all
select 2 union all
...
select 3000

delete from table_name where id in
(select id from @ids)

显然只是将数字更改为实际 ID

【讨论】:

  • 感谢您的建议,我会尝试这种方式,因为它看起来不那么复杂
  • @GordonLinoff - 没错,我已经编辑并更正了帖子,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 2023-03-08
相关资源
最近更新 更多