У меня есть этот маленький вопрос, который был у меня в голове некоторое время.
Вот оно:
Возможно ли временно отключить Auto_Increment для идентификатора столбца.
Чтобы я мог добавить новую строку в таблицу и иметь возможность указать значение идентификатора при вставке строки.
И затем в конце снова включить Auto_Increment, и пусть он будет работать как обычно?
И если это возможно, как я могу это сделать?
Структура таблицы очень проста
Имя столбца (атрибуты)
ID (Primary Key, Auto Increment, int, not null)
Name (nvarchar(100), not null)
Примечание:
- Имя таблицы:
People
. - Также давайте рассмотрим, что таблица уже содержит данные и не может быть изменена.
- Сервер базы данных - SQL ServerCE.
- Команды SQL будут выполняться в программе на C #, если это поможет.
Я действительно надеюсь, что это возможно, это очень удобно.
Спасибо
РЕДАКТИРОВАТЬ
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());
}
Строка подключения работает, у меня есть тперечитал его.
Он сообщает:
Произошла ошибка при разборе запроса.[Номер строки токена = 1, смещение линии токена = 20, Ошибка токена = SET]
РЕШЕНИЕ благодаря 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());
}