![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Автоинкремент своими руками [MSSQL2000]
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]автоинкриментное поле + вычисляемое поле
А вообще - всё это от лукавого...