2014-12-02 3 views
3

У меня есть уникальный уникальный идентификатор столбца nchar (10). Я планирую сгенерировать в нем числовой идентификатор. Инкрементальный порядок в порядке, но не нужен. Как сделать оптимальный генератор по этой причине? Должен ли я использовать хранимую процедуру? Может быть, MS SQL-сервер имеет какие-то функции по этой причине?Создать уникальное значение в MS SQL

+2

Вы могли бы сделать его столбец IDENTITY для последовательных чисел. –

+1

Почему вы используете nchar (10), вы должны использовать INT с свойствами PRIMARY KEY и IDENTITY в том же столбце. –

+2

Зачем использовать nchar для числового идентификатора? Это похоже на «Хорошо, позвольте мне попробовать самое худшее и самое медленное и наиболее проблематичное решение, потому что я действительно хочу выглядеть так, как будто я никогда не читал о типах данных». – TomTom

ответ

1

DECLARE PkStudentid, как INT

CREATE TABLE Student 
(
Studentid int IDENTITY (1, 1) NOT NULL PRIMARY KEY, 
Firstname nvarchar (200) NULL, 
Lastname nvarchar (200), 
Email nvarchar (100) NULL 
) 

insert into Student (Firstname,Lastname,Email) 
Values('Vivek', 'Johari', ‘[email protected]'); 

SET @PkStudentid = SCOPE_IDENTITY(); 

print @PkStudentid 

Это вставит Studentid как 1 и следующий вход 2 и приращение порядка.

В SQL Server необходимо использовать IDENTITY property.

Отредактировано: используйте SCOPE_IDENTITY в SQL Server, чтобы получить последние вставленные Studentid.

+0

Хорошо, это прекрасно и это то, что мне нужно. Но мне нужно получить этот уникальный идентификатор во время вставки – vico

+0

@vico Собираетесь ли вы использовать последний вставленный Studentid где-нибудь? –

+0

Нет, мне нужно будет вернуть его в свою программу – vico

0
ID int IDENTITY (1, 1) NOT NULL PRIMARY KEY 

Используйте IDENTITY свойство в MS SQL вместе с PRIMARY KEY для уникальности.

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

  • Каждое новое значение создается на основе текущего семени & приращения.
  • Каждое новое значение для конкретной транзакции отличается от других параллельных транзакций в таблице.
  • (1,1) - Начальное значение и значение Приращения, которое вы можете получить по своему желанию.
1

Для столбца первичного ключа вы должны использовать колонку INT с вставкой IDENTITY.

Альтернативное решение:

Тем не менее, если вы не хотите использовать тип данных INT, то альтернативное решение создать столбец со значением по умолчанию LEFT(NEWID(), 10) с UNIQUE/PRIMARY KEY на нем. Потому что функция NEWID() генерирует разные случайные строки каждый раз.

Для примера:

SELECT LEFT(REPLACE(NEWID(),'-',''),(10)) 

Выше запроса даст другую случайную строку.

Проверить SQL FIDDLE DEMO:

ВЫВОД

|   ID | NAME | 
|------------|------| 
| 482E5D4850 | pqr | 
| 70369ED157 | abc | 
| 768CC98442 | xyz | 
Смежные вопросы