2011-08-09 37 views
9

有沒有辦法從數據表中刪除主鍵還是有什麼辦法先刪除「PK」的約束,然後刪除列本身?刪除數據表中的主鍵

謝謝!

更新:

dtTable.Columns.Add(new System.Data.DataColumn("PRIMARY_KEY", typeof(System.Int32))); 
dtTable.PrimaryKey = new DataColumn[1] { dtTable.Columns["PRIMARY_KEY"] }; // throws an error 
dtTable.Columns["PRIMARY_KEY"].AutoIncrement = true; 
+0

哪個數據庫?請考慮你的標籤。 –

+3

我提到了數據表中的問題。這意味着ASP.NET的System.Data.DataTable的數據表 –

+1

,因爲它不僅僅屬於ASP.NET。 –

回答

19

可以使用

DataTable.PrimaryKey = null; 

您可以使用

DataTable.Columns.Remove("column name here"); 
+0

會刪除列或約束?如果以後,那麼如何刪除列? –

+0

@Xor power:我編輯了我的答案 –

+0

謝謝!這樣可行!但是,如果我再次添加它(我需要這種方式!)它拋出了錯誤的「這些列目前沒有獨特的價值」。我用代碼更新了我的問題。 –

2

刪除數據表列,我發現刪除primay關鍵,有時從數據表刪除的PrimaryKey後:

MyDataTable.PrimaryKey = null; 

唯一設置在刪除的PrimaryKey的成員列上保持爲真。

我的解決辦法:

public static void KillPrimaryKey(DataTable LocDataTable) 
{ 
    int LocPriKeyCount = LocDataTable.PrimaryKey.Length; 
    string[] PrevPriColumns = new string[LocPriKeyCount]; 

    // 1. Store ColumnNames in a string Array 
    for (int ii = 0; ii < LocPriKeyCount; ii++) PrevPriColumns[ii] = LocDataTable.PrimaryKey[ii].ColumnName; 
    // 2. Clear PrimaryKey 
    LocDataTable.PrimaryKey = null; 
    // 3. Clear Unique settings 
    for (int ii = 0; ii < LocPriKeyCount; ii++) LocDataTable.Columns[PrevPriColumns[ii]].Unique = false; 
} 
+0

爲什麼這麼長的代碼?爲什麼不使用foreach作爲'foreach(DataColumn dac在LocDataTable.Columns中)dac.Unique = false;' – Sijav