2011-08-09 26 views
9

Birincil anahtarın veri tabanından kaldırılmasının bir yolu var mı? Veya önce "PK" kısıtlamalarını kaldırmanın ve sonra da sütunun kendisini kaldırmanın bir yolu var mı?Birincil anahtarı veritabanından kaldırmanın bir yolu var

Teşekkürler!

GÜNCELLEME:

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

veritabanı? Lütfen etiketlerinizi dikkate alın. –

+3

Bu soruya veri tabanından bahsetmiştim. Bu, ASP.NET'e ait olmadığı için asp.net datatable –

+1

. NET'in System.Data.DataTable'ı ifade eder. –

cevap

19

bulduğuma

DataTable.PrimaryKey = null; 

Eğer

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

bu sütun veya kısıtlama kaldırır mı? Daha sonra, nasıl sütunu kaldırmak için? –

+0

@Xor power: Cevabımı düzenledim –

+0

teşekkürler! bu işe yarıyor! Ama eğer tekrar ekliyorsam (buna ihtiyacım var!) "Bu sütunların şu anda benzersiz değerleri yoktur" diye bir hata atıyor. Sorumu koduyla güncelledim. –

2

kullanarak veri tablosu sütunu silebilirsiniz kullanarak primay anahtarını kaldırın ki bazen bir DataTable dan PrimaryKey çıkardıktan sonra :

MyDataTable.PrimaryKey = null; 

Benzersiz ayar silinmiş PrimaryKey öğesinin üye sütunlarında doğrudur.

Çözümümün:

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

neden bu uzun kod? neden foreach 'foreach (LocDataTable.Columns'da DataColumn dac) kullanmıyorsunuz dac.Unique = false;' – Sijav

İlgili konular