Eine zufällige Zeichenfolge (6 Zeichen) wird als Primärschlüssel in meiner SQL-Datenbanktabelle verwendet. Ich weiß jedoch nicht, wie der Fehler behandelt und die Abfrage erneut in die Datenbank eingefügt wird.Wie behandelt man Primärschlüssel Existenz für einen zufälligen String-Schlüssel in SQL?
Was ist die beste Lösung, die die SQL-Abfrage mit einem anderen zufälligen String-Schlüssel wieder in die Datenbank einfügt? (Tut den Wiedereinsatz in catch-Block?)
try
{
SqlConnection con = new SqlConnection(ConnectionString);
con.Open();
var key = RandomString(6);
SqlCommand insertCommand = new SqlCommand("INSERT INTO tableName(d1, d2, d3) VALUES (@0, @1, @2)", con);
insertCommand.Parameters.Add(new SqlParameter("0", key));
insertCommand.Parameters.Add(new SqlParameter("1", "values"));
insertCommand.Parameters.Add(new SqlParameter("2", DateTime.Now));
var rowCount = insertCommand.ExecuteNonQuery();
con.Close();
if (rowCount < 1)
{
label.Text = "OMG it is Fail :(";
return false;
}
else
{
label.Text = "HEY ~~~ inserted";
return true;
}
}
catch (Exception ex)
{
label.Text = ex.Message;
return false;
}
Der obige Code ist in C# geschrieben, aber ich glaube nicht, das Problem C# ist nur. Daher ist es für eine andere Programmiersprache willkommen :)
Wie wird der 'random' Schlüssel generiert? – Squirrel
@Squirrel es ist eine Methode, die eine Zeichenfolge mit 6 Zeichen in 0-9 zurückgibt, a ~ z und A ~ Z –
Anstatt zu versuchen, die Symptome eines schlechten Designs zu maskieren, wäre Ihre Zeit viel klüger ausgegeben ändern Primärschlüssel (der offensichtlich bedeutungslos ist, da er zufällig ist) zu etwas Sinnlichem wie einer Identität oder einer eindeutigen Identifizierung. Sie könnten sogar eine berechnete Spalte generieren eine 6-stellige Darstellung einer Identität, wenn Sie Rückwärtskompatibilität benötigen (auch nur Sechseck würde Ihnen 16,7 Millionen eindeutige Werte geben). –