SQL Server: автоинкрементный символ pk - PullRequest
2 голосов
/ 05 декабря 2011

Можно ли иметь первичный ключ char на столе?Например, «WC001» будет автоматически увеличиваться на 1, поэтому следующая запись для ПК будет «WC002» и т. Д.

Кто-нибудь может привести пример?

Спасибо

Ответы [ 3 ]

3 голосов
/ 05 декабря 2011

Не напрямую - но у вас может быть обычный INT IDENTITY числовой идентификатор с автоинкрементом, который затем определяет вычисляемый постоянный столбец (SQL Server 2005 и новее) - что-то вроде:

CREATE TABLE dbo.YourTable
(ID INT IDENTITY(1,1),
 CharID AS 'WC' + RIGHT('000' + CAST(ID AS VARCHAR(3)), 3) PERSISTED,

 CONSTRAINT PK_YourTable PRIMARY KEY(CharID)
)

Вставка значений вэта таблица приведет к тому, что столбец ID будет 1, 2, 3, 4, 5, ....., а столбец CharID автоматически будет WC001, WC002, WC003 и т. д.

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

1 голос
/ 05 декабря 2011

Не легко, но если вам нужно что-то подобное, ничто не помешает вам разбить буквенно-цифровую часть вашего ключа.Сделайте WC часть AKey, а числовое значение будет NKey, а автоматически добавьте Nkey.

. Если хотите, вы можете выставить его в view как:

SELECT AKey + CAST(nkey as varchar) as 'Key'
...

Реализация «пользовательской» идентификации никогда не работает должным образом, поскольку существует множество факторов, связанных с эффективным решением проблем параллелизма.

SQL Server 2012 добавит поддержку более сложных полей идентификации.

0 голосов
/ 05 декабря 2011

Я предлагаю создать еще один столбец с именем Id IDENTITY(1,1) INT, а затем сделать желаемый столбец в качестве вычисляемого столбца, который будет состоять из Id и отформатированного числа 0 с.

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