表重命名时应采取什么预防措施?

时间:2018-12-13 08:07:22

标签: sql sql-server foreign-keys rename conflict

有时,由于对表进行重命名,可能会发生插入错误。 任何人都可以共享表重命名之前或之后应该执行的任何过程。

示例:

  

INSERT语句与FOREIGN KEY约束冲突   “ ForignKeyName”。在数据库“ DB”的表中发生了冲突   “ TABLE”,“ COLUMN”列。

1 个答案:

答案 0 :(得分:1)

找到所有外键并更改约束。为此,所有引用的表都应该知道。

以下查询列出了引用重命名表的所有约束。 请更改相应表中的约束。

 SELECT
      f.name constraint_name
      ,OBJECT_NAME(f.parent_object_id) referencing_table_name
      ,COL_NAME(fc.parent_object_id 
      ,fc.parent_column_id) referencing_column_name
      ,OBJECT_NAME (f.referenced_object_id) referenced_table_name
      ,COL_NAME(fc.referenced_object_id
      ,fc.referenced_column_id) referenced_column_name
      ,delete_referential_action_desc
      ,update_referential_action_desc
 FROM sys.foreign_keys AS f
 INNER JOIN sys.foreign_key_columns AS fc
   ON f.object_id = fc.constraint_object_id
   where       
   OBJECT_NAME (f.referenced_object_id) ='RENAMEING_TABLE_NAME' -- deleting/ renaming table 
 ORDER BY f.name