我有一个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了。将它从地球表面擦掉。
这是我的想法:
NULL
(理论上,我还可以在包含该GUID的任何表中找到 任何类型的任何列,并将值设置为{{ 1}}。由于它是一个GUID,它不能真正存在,除了(1)将行标识为PK,或(2)将该行引用为FK。但为什么GUID会出现在列中除非它是PK或FK?)
我的想法是否正确,在这里?我本质上想要从数据库中清除对逻辑对象的所有引用。该对象由一个完全独特的值来识别,因此我只需要对该值进行所有“焦土”。
我不能成为第一个想要这样做的人。我是否需要为它滚动我自己的存储过程,或者我不知道这里有一些现有的功能?