Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Primary key as nchar(5), Вставка новой строки 
:(
    Опции темы
Codegrammer
Дата 4.8.2010, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.4.2008

Репутация: нет
Всего: нет



MS SQL SERVER 2008. База данных Northwind. Работаю с таблицей Customers. Там id - nchar(5). Как можно сгенерить уникальный ключ при вставки новой строки?
PM MAIL   Вверх
Gluttton
Дата 4.8.2010, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: нет
Всего: 54



Если не ошибаюсь, то в MS SQL Server для символьных строк работают агрегатные функции min() и max()... Как вариант можно приобщить их (в частности max()) к решению данного вопроса. Т.е. определять ключ, как максимальное значение плюс какая то величина. Правда я не знаю, прокатит ли вот такое 'A' + 1 = 'B', но я думаю, что попробовать стоит.


--------------------
Слава Україні!
PM MAIL   Вверх
VirusUZ
  Дата 6.8.2010, 16:51 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 9.4.2010
Где: Узбекистан, Навои й обл.

Репутация: нет
Всего: -2



Код

@@identity+1

--------------------
Virus
PM MAIL   Вверх
Gluttton
Дата 6.8.2010, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: нет
Всего: 54



VirusUZ, хм, а я думал, что @@identity хранит последнее значение autoincrement...


--------------------
Слава Україні!
PM MAIL   Вверх
LSD
Дата 9.8.2010, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: нет
Всего: 538




M
LSD
Перенесено их баз данных



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Akina
Дата 9.8.2010, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



Цитата(Codegrammer @  4.8.2010,  14:23 Найти цитируемый пост)
Как можно сгенерить уникальный ключ при вставки новой строки?

Несомненно, генерить придётся программно.
Но вообще если ключ генерируется программно, то нет никакого смысла делать его не-числовым. 
В учебной БД он как раз "рожается" и вводится вручную как слегка расширенное ФИО кастомера.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
motorway
Дата 9.8.2010, 17:54 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



НЯП, там был особый тип uid, который генерировал случайную текстовую строку.
PM MAIL   Вверх
Zloxa
Дата 10.8.2010, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 10
Всего: 161



motorway, GUID - 128 байтовая последовательность, которая частенько представляется 38ми символьной строкой, которую, крайне проблематично было бы сохранить в пятисимвольном поле.

Codegrammer, данное поле в учебной базе демонстрирует т.н. "натуральный ключ". В отличии от суррогатных, натуральные ключи несут в себе некую информационную составляющею, имеющую какую-то значимость за пределами контекста базы данных. Потому натуральные ключи не генерируются автоматически в базе. 

Я бы осмелился предположить что в качестве CustomerID должно использоваться значение из какого то реестра, вроде нашего ЕГРЮЛ.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.