Mam to małe pytanie, które już od jakiegoś czasu mi chodziło.Sql Server CE - Tymczasowe wyłączanie automatycznego przyrostu dla konkretnej kolumny
Tu idzie:
Czy możliwe jest tymczasowe wyłączenie AUTO_INCREMENT na ID kolumny.
Dzięki temu mogę dodać nowy wiersz do tabeli i móc określić wartość identyfikatora podczas wstawiania wiersza.
A następnie na koniec ponownie włączyć funkcję Auto_Incment i pozwolić jej działać jak zwykle?
A jeśli to możliwe, jak mogę to zrobić?
Struktura tabeli jest bardzo prosta
Nazwa kolumny (atrybuty)
ID (Primary Key, Auto Increment, int, not null)
Name (nvarchar(100), not null)
Uwaga:
- Nazwa tabeli jest:
People
. - Rozważmy również, że tabela ma już dane i nie można jej zmienić.
- Serwer bazy danych to SQL Server CE.
- Polecenia SQL zostaną wykonane w programie C#, jeśli będzie potrzebna.
Naprawdę mam nadzieję, że to możliwe, przyda się bardzo.
Dzięki
EDIT
SqlActions SqlActions = new SqlActions();
SqlCeCommand SqlCmd = new SqlCeCommand("SET IDENTITY_INSERT People ON", SqlActions.Connection());
try
{
SqlCmd.ExecuteNonQuery();
}
catch (SqlCeException Error)
{
Console.WriteLine(Error.ToString());
}
string query = "INSERT INTO People SET (ID, Nome) VALUES (@ID, @Nome)";
SqlCeCommand SqlInsert = new SqlCeCommand(query, SqlActions.Connection());
SqlInsert.Parameters.AddWithValue("@ID", 15);
SqlInsert.Parameters.AddWithValue("@Nome", "Maria");
try
{
SqlInsert.ExecuteNonQuery();
}
catch (SqlCeException Error)
{
Console.WriteLine(Error.ToString());
}
Ciąg połączenie działa, próbowałem go.
On donosi:
Wystąpił błąd parsowania zapytania. [Reklamowe numer linii = 1, Reklamowe linia przesunięcie = 20, token w Error = SET]
SOLUTIONdzięki OrbMan
SqlActions SqlActions = new SqlActions();
SqlCeCommand SqlCmd = new SqlCeCommand("SET IDENTITY_INSERT People ON", SqlActions.Connection());
try
{
SqlCmd.ExecuteNonQuery();
string query = "INSERT INTO People (ID, Nome) VALUES (@ID, @Nome)";
SqlCmd.CommandText = query;
SqlCmd.Parameters.AddWithValue("@ID", 15);
SqlCmd.Parameters.AddWithValue("@Nome", "Vania");
SqlCmd.ExecuteNonQuery();
}
catch (SqlCeException Error)
{
Console.WriteLine(Error.ToString());
}
już odpowiedział [tutaj] (http://stackoverflow.com/questions/682654/sql-server-ce-3-5 -identity-insert) ... –
Już próbowałem tego, bez powodzenia. –