Получить значение ключа AutoIncrement, если столбец НЕ является первым в таблице - PullRequest
0 голосов
/ 14 января 2010

У меня есть вопрос относительно того, как извлечь значение автоинкремента или идентификатора для столбца в SQL Server 2005, когда указанный столбец не является первым объявленным столбцом в таблице.

Я могу получить сгенерированное значение для таблицы, просто введя следующий код:

MyTable newRecord = new MyTable();
newRecord.SomeColumn = 2;
newRecord.Save();
return newRecord.MyIdColumn;

Это прекрасно работает с учетом того, сколько других столбцов составляют первичный ключ этой конкретной таблицы, но первый объявленный столбец ДОЛЖЕН быть столбцом идентификаторов, иначе это не сработает.

Моя проблема в том, что я должен интегрировать свой код с другими таблицами, которые находятся вне моей досягаемости, и у них есть столбцы идентификаторов, которые НЕ являются первыми столбцами в этих таблицах, поэтому мне было интересно, есть ли правильный обходной путь для моего проблема, или я застрял, используя что-то вроде SELECT @@ IDENTITY, чтобы вручную получить это значение?

Заранее большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 14 января 2010

Из отдела "Ewww Gross":

Вот мой обходной путь, надеюсь, кто-то может предложить лучшее решение для того, что я сделал.

MyTable newRecord = new MyTable();
newRecord.SomeColumn = 2;
newRecord.Save();
CodingHorror horror = new CodingHorror();
string SQL = "SELECT IDENT_CURRENT(@tableName)";
int newId = horror.ExecuteScalar<int>(SQL, "MyTable");
newRecord.MyIdColumn = newId;
newRecord.MarkClean();
return newRecord.MyIdColumn;
...