av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

巧對(duì)sqlserver外鍵重命名

sql server外鍵如果不合我們的心意,能不能進(jìn)行重命名呢?答案是肯定的。下文的例子就將為您示范sql server外鍵如何進(jìn)行重命名,供您參考。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了朝天免費(fèi)建站歡迎大家使用!

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

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

 
 
 
  1. FK_ForeignTable_PrimaryTable_On_ForeignColumn 

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

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

 
 
 
  1. declare fkcur cursor for   
  2.  
  3. select   
  4.  
  5. OBJECT_NAME(col.constraint_object_id) as FKConstraintName    
  6.  
  7. ,fkTable.name as FKTable    
  8.  
  9. ,fkCol.name as FKColumn    
  10.  
  11. ,pkTable.name as PKTable    
  12.  
  13. ,pkCol.name as PKColumn    
  14.  
  15. from sys.foreign_key_columns col    
  16.  
  17. -- 外鍵約束是建立在外鍵表上的,    
  18.  
  19. -- 因此foreign_key_columns表中的parent_object_id和parent_column_id分別表示外鍵表和外鍵列    
  20.  
  21. inner join sys.objects fkTable    
  22.  
  23.     on fkTable.object_id = col.parent_object_id    
  24.  
  25. inner join sys.columns fkCol    
  26.  
  27.     on fkCol.column_id = col.parent_column_id    
  28.  
  29.     and fkCol.object_id = fkTable.object_id    
  30.  
  31. -- foreign_key_columns表中的referenced_object_id和referenced_column_id分別指向    
  32.  
  33. -- 外鍵約束的主鍵表對(duì)象以及主鍵列    
  34.  
  35. inner join sys.objects pkTable    
  36.  
  37.     on pkTable.object_id = col.referenced_object_id    
  38.  
  39. inner join sys.columns pkCol    
  40.  
  41.     on pkCol.column_id = col.referenced_column_id    
  42.  
  43.     and pkCol.object_id = pkTable.object_id    
  44.  
  45. order by OBJECT_NAME(col.constraint_object_id)    
  46.  
  47.      
  48.  
  49. open fkcur    
  50.  
  51. declare @constraintName nvarchar(128)    
  52.  
  53. declare @fkTable nvarchar(64)    
  54.  
  55. declare @fkColumn nvarchar(64)    
  56.  
  57. declare @pkTable nvarchar(64)    
  58.  
  59. declare @pkColumn nvarchar(64)    
  60.  
  61. declare @newConstraintName nvarchar(128)    
  62.  
  63.      
  64.  
  65. fetch next from fkcur    
  66.  
  67. into @constraintName,@fkTable,@fkColumn,@pkTable,@pkColumn    
  68.  
  69. while @@FETCH_STATUS = 0    
  70.  
  71. begin   
  72.  
  73.     set @newConstraintName = 'FK_'+@fkTable+'_'+@pkTable+'_On_'+@fkColumn    
  74.  
  75.     exec sp_rename @constraintName,@newConstraintName,'Object'   
  76.  
  77.      
  78.  
  79.     fetch next from fkcur    
  80.  
  81.     into @constraintName,@fkTable,@fkColumn,@pkTable,@pkColumn    
  82.  
  83. end   
  84.  
  85. close fkcur    
  86.  
  87. deallocate fkcur   

【編輯推薦】

教您sql server外鍵的設(shè)置和刪除

sqlserver分頁存儲(chǔ)過程實(shí)例

sql server分頁的兩種方法比較

SQL SERVER分區(qū)視圖

帶您解讀SQL Server2008中的TIME數(shù)據(jù)類型


當(dāng)前題目:巧對(duì)sqlserver外鍵重命名
地址分享:http://uogjgqi.cn/article/dpcpsec.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們在微信上24小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流