日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
重命名SqlServer外鍵約束名的方法

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

創(chuàng)新互聯(lián)的團隊成員不追求數(shù)量、追求質量。我們經驗豐富并且專業(yè),我們之間合作時就好像一個人,協(xié)同一致毫無保留。創(chuàng)新互聯(lián)珍視想法,同時也看重過程轉化帶來的沖擊力和影響力,在我們眼中,任何細節(jié)都不容小覷。一直致力于為企業(yè)提供從主機域名、網(wǎng)站策劃、網(wǎng)站設計、電子商務商城網(wǎng)站建設、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務。

采用的命名規(guī)則是:

 
 
 
  1. FK_ForeignTable_PrimaryTable_On_ForeignColumn 

直白的翻譯就是,F(xiàn)oreignTable在ForeignColumn列上引用了PrimaryTable的主鍵。

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

 
 
 
  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中動態(tài)sql語句的應用

SQL Server刪除視圖的兩種方法

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

帶您了解sql server內部變量


當前文章:重命名SqlServer外鍵約束名的方法
轉載來源:http://www.5511xx.com/article/cdohgji.html