Как получить следующий номер строки в MS SQL 2008 - PullRequest
0 голосов
/ 19 октября 2011

Буду признателен, если кто-нибудь покажет мне, как в SQL Server 2008 вы можете получить следующий свободный номер строки в таблице базы данных?

Я пытаюсь реализовать нечто подобное Oracle, где порядковые номера дают следующий номер для новой строки. Поиск в Интернете, я не нашел ничего, что соответствует этому, но я нашел row_number(). К сожалению, я не могу заставить его работать внутри оператора insert.

Ответы [ 4 ]

2 голосов
/ 19 октября 2011

Я думаю, что вы ищете IDENTITY для столбца.Использование этого позволяет SQL Server автоматически назначать номера строк, которые вы называете.

Быстрый пример использования id в качестве столбца IDENTITY:

DECLARE @MySampleTable TABLE (
    id INT IDENTITY(1,1) PRIMARY KEY,
    name VARCHAR(20)
);

INSERT INTO @MySampleTable
    (name)
    VALUES ('Andy5'), ('Joe');

SELECT id, name
    FROM @MySampleTable;
1 голос
/ 20 декабря 2011
DECLARE @newId int;
SET @newId = 0;

select @newId = max(id) + 1
from my_table;

insert into my_table
values(@newId, ...)

... more code ...

Оберните вышеуказанный код в транзакцию, и все готово.

0 голосов
/ 19 октября 2011

Вы должны настроить поле идентификатора при создании таблицы.Затем, когда вы вставляете в него, вы пропускаете это поле.Вставка была бы чем-то вроде предположения, что поле идентичности называется table1id:

Insert table1 (field1,field2)
values('test','test2')

Теперь у идентичности есть некоторые ограничения.Он будет использовать число, даже если действие откатано или если запись удалена, он не будет использовать ее повторно, поэтому будут пробелы.Это не должно быть важно, так как суррогатный идентификатор в любом случае не должен иметь делового значения.

0 голосов
/ 19 октября 2011

Вы действительно хотите номер строки или просто ищете идентификатор?

В этом случае ищите столбцы идентификаторов и сервер SQL. http://www.dotnetfunda.com/articles/article753-identity-columns-in-sql-server.aspx

или: http://www.sqlteam.com/article/autonumbering-identity-columns

В этих случаях в своем операторе вставки вы не указываете идентификатор, и сервер SQL автоматически предоставляет новый.

Сукчес

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...