Sql 表重命名时应采取哪些预防措施?

Sql 表重命名时应采取哪些预防措施?,sql,sql-server,foreign-keys,rename,conflict,Sql,Sql Server,Foreign Keys,Rename,Conflict,有时,由于重命名表,可能会发生插入错误。 任何人都可以共享重命名表之前或之后应该执行的任何过程 例如: INSERT语句与外键约束冲突 “ForignKeyName”。数据库“DB”表中发生冲突 “表”,列“列” 找到所有外键并更改约束。为此,所有引用的表都应该知道 下面的查询列出了引用重命名表的所有约束。 请更改相应表中的约束条件 SELECT f.name constraint_name ,OBJECT_NAME(f.parent_object_id) refere

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

例如:

INSERT语句与外键约束冲突 “ForignKeyName”。数据库“DB”表中发生冲突 “表”,列“列”


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

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

 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

根据“更改对象名称的任何部分都可能破坏脚本和存储过程。我们建议您不要使用此语句重命名存储过程、触发器、用户定义函数或视图;相反,请删除对象并使用新名称重新创建它。”该错误与重命名表无关。由于数据原因,您正在破坏约束。这对创建表并重命名旧表而不是更新表的人很有帮助。