2016-08-04 7 views
0

Ich versuche, eine Spalte in meiner Tabelle mit SQL Compact Edition hinzuzufügen. Früher hat es funktioniert, aber ich erhalte jetzt einen Fehler, der besagt, dassÄndern der Tabelle zum Hinzufügen eindeutiger Spalten sql ce

Ein doppelter Wert kann nicht in einen eindeutigen Index eingefügt werden. [Table name = letzter Versuch, Constraint name = UQ__final try__0000000000000228]

i C# bin mit, weil ich die neuen Spaltennamen (mit Textbox) und bestimmen, ob die Spalte eindeutig ist (Kontrollkästchen) bin immer. Früher hat es funktioniert, dann ist es plötzlich nicht mehr. bitte hilfe! Mein Code ist irgendwie unordentlich. Es tut mir leid hier ist sie:

string constr = "ALTER TABLE "; 
if (textBox2.Text.ToString() != "") 
{ 
    constr += "[" + table + "] ADD [" + col1 + "]"; 
    if (comboBox2.Text == "text") 
    { 
     constr += " nvarchar(300)"; 
    } 
    else if (comboBox2.Text == "number") 
    { 
     constr += " int"; 
    } 
    else if (comboBox2.Text == "date") 
    { 
     constr += " datetime"; 
    } 
    if (checkBox1.Checked) 
    { 
     constr += " unique"; 
    } 
} 
cmd.CommandText = constr; 
cmd.ExecuteNonQuery(); 

Die constr gibt so etwas wie

ALTER TABLE table ADD COLUMN column1 int unique 

Bitte um Hilfe! Vielen Dank!

EDIT:

ich, dass ich nicht eine Spalte nur hinzufügen entdeckt, wenn die Datenrasteransicht bereits seine Daten innerhalb haben. Was soll ich machen? Hilfe! Vielen Dank!!!

+0

Das Problem aus der Datagridview kommen scheint, nicht die alten table SQL ... – Grace

+0

können Sie Spalten in die Tabelle, wenn die Tabelle hinzufügen ist gefüllt, aber nicht wenn das Feld NICHT NULL oder UNIQUE ist. Wenn das Feld nicht null ist, müssen Sie einen Standardwert angeben, und wenn Sie möchten, dass es eindeutig ist, müssen Sie die Spalte ohne eindeutig hinzufügen und dann einen eindeutigen Index erstellen, der nach der Erstellung der Spalte Nullen zulässt – GuidoG

Antwort

0

Ich bin nicht vertraut mit SQL Server CE, aber in normalen SQL-Server Erstellen einer Spalte mit dem eindeutigen Schlüsselwort bedeutet, erstellen einen Index, wo keine 2 Zeilen können eine Null darin haben, weil sie nicht eindeutig sind.

Sie müssen also Ihre Spalte ohne das Schlüsselwort unique erstellen und anschließend einen eindeutigen Index erstellen, der null zulässt.

Sie können einen eindeutigen Index erstellen, die NULL-Werte wie dies ignoriert:

CREATE UNIQUE NONCLUSTERED INDEX idx_col1 
ON dbo.MyTable(col1) 
WHERE col1 IS NOT NULL; 
Verwandte Themen