如何最好地从SQL数据库中删除对特定GUID的所有引用?

时间:2016-05-19 12:54:47

标签: sql sql-server

我有一个SQL Server数据库,其中记录由GUID标识,这意味着所有行都具有uniqueidentifier类型的主键。

示例:

Table A
-- Table B
-- Table C

因此,表A中的记录具有给定的GUID作为PK,表B和C中的记录具有表A中记录的FK列。表B和C中的记录不存在而没有记录表A.

鉴于GUID 并且不知道它显示为PK或FK 的任何表,我是否可以编写一个存储过程来简单地蒸发与该GUID相关的所有内容?我基本上想说:

  

嘿SQL,我不再喜欢这个GUID了。将它从地球表面擦掉。

这是我的想法:

  • 查找任何表中包含该GUID的可空 FK中的任何列,并将列值设置为NULL
  • 查找任何表中包含该GUID的不可为空的 FK中的任何列,并删除该行
  • 查找任何包含该GUID的PK的任何列,并删除该行

(理论上,我还可以在包含该GUID的任何表中找到 任何类型的任何列,并将值设置为{{ 1}}。由于它是一个GUID,它不能真正存在,除了(1)将行标识为PK,或(2)将该行引用为FK。但为什么GUID会出现在列中除非它是PK或FK?)

我的想法是否正确,在这里?我本质上想要从数据库中清除对逻辑对象的所有引用。该对象由一个完全独特的值来识别,因此我只需要对该值进行所有“焦土”。

我不能成为第一个想要这样做的人。我是否需要为它滚动我自己的存储过程,或者我不知道这里有一些现有的功能?

0 个答案:

没有答案