| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > Primary key as nchar(5) |
| Автор: Codegrammer 4.8.2010, 13:23 |
| MS SQL SERVER 2008. База данных Northwind. Работаю с таблицей Customers. Там id - nchar(5). Как можно сгенерить уникальный ключ при вставки новой строки? |
| Автор: Gluttton 4.8.2010, 17:42 |
| Если не ошибаюсь, то в MS SQL Server для символьных строк работают агрегатные функции min() и max()... Как вариант можно приобщить их (в частности max()) к решению данного вопроса. Т.е. определять ключ, как максимальное значение плюс какая то величина. Правда я не знаю, прокатит ли вот такое 'A' + 1 = 'B', но я думаю, что попробовать стоит. |
| Автор: VirusUZ 6.8.2010, 16:51 | ||
|
| Автор: Gluttton 6.8.2010, 17:04 |
| VirusUZ, хм, а я думал, что @@identity хранит последнее значение autoincrement... |
| Автор: LSD 9.8.2010, 16:27 | ||
|
| Автор: Akina 9.8.2010, 17:06 |
Несомненно, генерить придётся программно. Но вообще если ключ генерируется программно, то нет никакого смысла делать его не-числовым. В учебной БД он как раз "рожается" и вводится вручную как слегка расширенное ФИО кастомера. |
| Автор: motorway 9.8.2010, 17:54 |
| НЯП, там был особый тип uid, который генерировал случайную текстовую строку. |
| Автор: Zloxa 10.8.2010, 10:01 |
| motorway, GUID - 128 байтовая последовательность, которая частенько представляется 38ми символьной строкой, которую, крайне проблематично было бы сохранить в пятисимвольном поле. Codegrammer, данное поле в учебной базе демонстрирует т.н. "натуральный ключ". В отличии от суррогатных, натуральные ключи несут в себе некую информационную составляющею, имеющую какую-то значимость за пределами контекста базы данных. Потому натуральные ключи не генерируются автоматически в базе. Я бы осмелился предположить что в качестве CustomerID должно использоваться значение из какого то реестра, вроде нашего ЕГРЮЛ. |