Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Автоинкремент своими руками [MSSQL2000]


Страницы:   1 2

Term ©   (2004-11-18 10:23:00) 

Значит проблема такая нужно автоинкремент заполнять определённым обпразом скажем чтобы генерились значения типа 1.1, 1.2 и т.д. 1. -префикс для всей базы, использую MSSQL2000, есть в данной СУБД генераторы такие или набодобие как в FB. чтобы из них получить уникальное значение а скажем в тригере слепить нужное значение и вставить в поле???


Anatoly Podgoretsky   (2004-11-18 11:22:00) [21]

Репликация не подразумевает постоянное соединение, она даже таким понятием и не фигурирует. А поскольку речь про MSSQL2000 то у нее есть и ключи расчитаные на репликацию.
Рекомендуется внимательно почить BOL как по ключам/типам, так и по репликации.


vuk   (2004-11-18 11:20:00) [22]

У нас используется ручная генерация искусственных ключей. Дело в том, что во-первых генерация искусственных ключей может происходить по какому-либо хитрому закону (пример - счетчик * 10 + код_подразделения или еще как-то), а во-вторых в старых версиях MSSQL был баг, когда слетали identity и значения начинали генериться повторно. С тех пор соломку стелим - проблем нет.

С реализацией проблем не вижу. Есть табличка с двумя полями (имя таблицы + счетчик). Перед вставкой записи генерится ID для нужной таблицы и вставляется вместе с остальными данными. Правда есть одна тонкость - у нас вся работа с данными ведется через хранимые процедуры и клиенты не имеют прямого доступа к таблицам. Поэтому все операции с данными находятся под контролем.

to Term   (18.11.04 10:49) [13]:
>просто еще такая фигня иногда значение сгенеренного поля нужно
>будет поменять
А вот это в корне неправильно. Идентификатор, он на то и идентификатор, чтобы быть неизменным.


Term   (2004-11-18 11:14:00) [23]


> Да. Штатными средствами генерации автоинкремента и репликации

штатные не годятся, нет постоянного соединения между двумя серверами, а данные перегонять нужно, поэтому изобретаются колёса по возможности более круглые


Nikolay M.   (2004-11-18 11:12:00) [24]


> Term   (18.11.04 11:03) [15]
> народ так есть способ это делать нормально, без хитростей
> от лукавого :)

Да. Штатными средствами генерации автоинкремента и репликации.


Term   (2004-11-18 11:03:00) [25]

народ так есть способ это делать нормально, без хитростей от лукавого :)


Term   (2004-11-18 10:50:00) [26]


> primary key - CHAR????
> Фи, как некультурно....

я про primary key ничего не говорил вроде


Term   (2004-11-18 10:49:00) [27]

просто еще такая фигня иногда значение сгенеренного поля нужно будет поменять


Term   (2004-11-18 10:47:00) [28]


> Для репликации надо использовать другие методы, а не городить
> велосипед с квадратными колесами.

подскажи круглые


Term   (2004-11-18 10:45:00) [29]


> Имхо, ему это для репликации (скорее всего опять же самопальной)
> нужно.

енто точно просто без самопальной не обойтись


Anatoly Podgoretsky   (2004-11-18 10:44:00) [30]

Для репликации надо использовать другие методы, а не городить велосипед с квадратными колесами.


Соловьев   (2004-11-18 10:43:00) [31]


> А потом, почему у меня
> 1.1
> 1.10
> 1.2
> я хочу
> 1.1
> 1.2
> 1.10


А так
1.01
1.02
1.10
?


Nikolay M.   (2004-11-18 10:40:00) [32]


> Term   (18.11.04 10:30) [5]
> > а какого они будут типа?
> естесвенно символы

Чушь какая... Да еще естественно...
Вот вечно изобретают свои велосипеды.


> ну и зачем? эту "1." достаточно рисовать, а не хранить

Имхо, ему это для репликации (скорее всего опять же самопальной) нужно.


ЮЮ   (2004-11-18 10:33:00) [33]

А потом, почему у меня
1.1
1.10
1.2
я хочу
1.1
1.2
1.10
:(


Ega23   (2004-11-18 10:31:00) [34]

primary key - CHAR????
Фи, как некультурно....


Term   (2004-11-18 10:30:00) [35]


> а какого они будут типа?

естесвенно символы


Ega23   (2004-11-18 10:27:00) [36]

Нет. Самому генерить надо. Или в ХП проавила прописать.

З.Ы. А нафига? Сделай ключ первичный как стандартный IDENTITY + добавь ещё одно поле, куда и пиши свои дроби. Я бы так сделал, по крайней мере.


Nikolay M.   (2004-11-18 10:27:00) [37]

Умножить на 10^х. Что мешает для каждой базы назначить стартовый номер генерации (Identity seed) кратный, скажем, миллиону?


ЮЮ   (2004-11-18 10:27:00) [38]

>1. -префикс для всей базы
ну и зачем? эту "1." достаточно рисовать, а не хранить

>значения типа 1.1, 1.2
а какого они будут типа?


Johnmen   (2004-11-18 10:27:00) [39]

автоинкриментное поле + вычисляемое поле
А вообще - всё это от лукавого...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо