成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

重命名Sql Server外鍵約束名的方法

數據庫 SQL Server
如果想將數據庫中的外鍵約束命名進行更改,應該如何操作呢?下文對遍歷數據庫的所有外鍵約束,找到外鍵約束的相關對象,然后重新生成一致的命名的方法作了詳細說明,供您參考。

數據庫原先是采用PowerDesigner設計的,Sql Server外鍵約束的命名非常難看,并且也和后來在SSMS中額外添加的Sql Server外鍵約束命名規則不一致,因此想遍歷數據庫的所有外鍵約束,找到外鍵約束的相關對象,然后重新生成一致的命名。

采用的命名規則是:

  1. FK_ForeignTable_PrimaryTable_On_ForeignColumn 

直白的翻譯就是,ForeignTable在ForeignColumn列上引用了PrimaryTable的主鍵。

Sql Server提供了很多動態管理視圖(Dynamic management views,DMV)和存儲過程,方便我們對數據庫進行維護。這里我用到了以下兩個sys.foreign_key_columns(包含外鍵約束完整信息)和sys.objects(數據庫對象信息)這兩個DMV以及sp_rename執行重命名的系統存儲過程。代碼如下:

  1. declare fkcur cursor for  
  2. select  
  3. OBJECT_NAME(col.constraint_object_id) as FKConstraintName  
  4. ,fkTable.name as FKTable  
  5. ,fkCol.name as FKColumn  
  6. ,pkTable.name as PKTable  
  7. ,pkCol.name as PKColumn  
  8. from sys.foreign_key_columns col  
  9. -- 外鍵約束是建立在外鍵表上的,  
  10. -- 因此foreign_key_columns表中的parent_object_id和parent_column_id分別表示外鍵表和外鍵列  
  11. inner join sys.objects fkTable  
  12.     on fkTable.object_id = col.parent_object_id  
  13. inner join sys.columns fkCol  
  14.     on fkCol.column_id = col.parent_column_id  
  15.     and fkCol.object_id = fkTable.object_id  
  16. -- foreign_key_columns表中的referenced_object_id和referenced_column_id分別指向  
  17. -- 外鍵約束的主鍵表對象以及主鍵列  
  18. inner join sys.objects pkTable  
  19.     on pkTable.object_id = col.referenced_object_id  
  20. inner join sys.columns pkCol  
  21.     on pkCol.column_id = col.referenced_column_id  
  22.     and pkCol.object_id = pkTable.object_id  
  23. order by OBJECT_NAME(col.constraint_object_id)  
  24.  
  25. open fkcur  
  26. declare @constraintName nvarchar(128)  
  27. declare @fkTable nvarchar(64)  
  28. declare @fkColumn nvarchar(64)  
  29. declare @pkTable nvarchar(64)  
  30. declare @pkColumn nvarchar(64)  
  31. declare @newConstraintName nvarchar(128)  
  32.  
  33. fetch next from fkcur  
  34. into @constraintName,@fkTable,@fkColumn,@pkTable,@pkColumn  
  35. while @@FETCH_STATUS = 0 
  36. begin  
  37.     set @newConstraintName = 'FK_'+@fkTable+'_'+@pkTable+'_On_'+@fkColumn  
  38.     exec sp_rename @constraintName,@newConstraintName,'Object'  
  39.  
  40.     fetch next from fkcur  
  41.     into @constraintName,@fkTable,@fkColumn,@pkTable,@pkColumn  
  42. end  
  43. close fkcur  
  44. deallocate fkcur  

 

 

 

 

【編輯推薦】

SQL Server外關鍵字約束的定義

sql server中動態sql語句的應用

SQL Server刪除視圖的兩種方法

SQL SERVER視圖對查詢效率的提高

帶您了解sql server內部變量

責任編輯:段燃 來源: 互聯網
相關推薦

2010-09-13 13:33:51

sql server外

2010-06-17 17:50:31

SQL Server外

2010-11-10 11:37:29

SQL Server刪

2010-09-25 13:16:51

SQL Server外

2010-09-25 11:50:47

sql server外

2010-10-19 17:28:08

SQL SERVER外

2010-09-13 13:44:22

sql server外

2010-09-13 14:05:09

sql server外

2010-09-28 11:38:26

sql字段

2011-03-22 12:59:18

SQLOracle外鍵約束

2019-11-05 08:20:13

MySQL數據庫外鍵

2010-11-19 13:48:18

2010-09-13 13:58:29

sql server外

2010-09-13 13:25:44

sql server外

2010-09-03 13:51:10

SQL刪除約束

2010-09-03 11:52:41

SQL刪除

2010-06-18 08:30:48

SQL Server

2010-09-08 13:21:19

SQL刪除約束

2010-10-09 10:04:48

MySQL定義外鍵

2010-11-22 09:43:07

MySQL定義外鍵
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产欧美 | 一区二区三区国产精品 | 欧美综合国产精品久久丁香 | 精品一区二区三区四区外站 | 精品无码久久久久久久动漫 | 国产九九精品视频 | 日韩a在线观看 | 美女在线国产 | 成人免费网站视频 | 在线日韩欧美 | 欧美a级成人淫片免费看 | 毛片视频免费 | 精品久久久久久久 | 超碰520| 中文字幕在线观看国产 | av在线天天| 亚洲精品视频在线看 | 99精品欧美一区二区三区 | 成人在线视频观看 | 美女福利视频 | 久久精品免费 | 国产精品美女在线观看 | 国产亚洲一区精品 | 亚洲影视在线 | 狠狠入ady亚洲精品经典电影 | 国产免费一区二区 | 亚洲激情自拍偷拍 | 网站黄色在线免费观看 | 国产片一区二区三区 | 自拍偷拍第一页 | 国产欧美久久一区二区三区 | 女人毛片a毛片久久人人 | 最新91在线 | 色婷婷久久综合 | 成人九色| 红桃视频一区二区三区免费 | 污污免费网站 | 色婷婷婷婷色 | 国产综合精品一区二区三区 | 欧美一区二区视频 | 成人午夜黄色 |