如何跟踪行级依赖?

时间:2010-09-10 20:56:49

标签: sql dependencies tracing

如果我需要将单行的PK从1更改为10,例如,有没有办法跟踪可能引用旧值的每个proc,view和function?

我的意思是,像:select * from table where FK = 1这样的过程中的简单选择会中断,我必须在每个过程和查看中查找每个参考,并将它们更改为10以使系统工作

有没有自动执行此操作的方法?我使用SQL SERVER。

1 个答案:

答案 0 :(得分:0)

我怀疑正确执行此操作的唯一方法是查询数据库元数据 - 识别将PK用作FK,proc或视图中的所有场所。这可能很复杂;脆弱;并容易出错。

这是避免将PK作为系统派生的,无意义的值之外的任何其他原因之一,这是(甚至)创建者/管理员无法操作的。此外,在什么情况下你会在proc或函数中硬编码PK-再次成为系统中潜在的脆弱源。

如果创建的PK不正确(按照任何标准)或需要更改,请创建新记录并将现有值复制到其中。虽然这不能回答您的查询,但您删除或修改表中值的例程需要知道它的使用方式和位置;因此,复制行的例程应该能够访问此信息。