|
|
|
Проблема с созданием ключа по формуле.....
|
|||
|---|---|---|---|
|
#18+
Для проектируемой распределенной БД остановился на решении с ключами поступить так - Каждая таблица имеет поле id - обыкновенный автоинкрементный счетчик - Каждая таблица имеет поле uid (целое 4 байта) = КодФилиала*1E6 + id Т.е. 4к филиалов и максимум по 1 млн записей на таблицу, по прикиду 1 млн должно хватать на некоторое время.... Проблема в SQL servere прописал - приняло - все Ок. В аксессе 97/2000 кричит - ненайдено поле [id] ???!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 11:27:44 |
|
||
|
Проблема с созданием ключа по формуле.....
|
|||
|---|---|---|---|
|
#18+
Елки, неужто нет ответов ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 15:46:32 |
|
||
|
Проблема с созданием ключа по формуле.....
|
|||
|---|---|---|---|
|
#18+
squidВ аксессе 97/2000 кричит - ненайдено поле [id] ???!!! Замечательно. Сообщение об ошибке приведено. Теперь все кидаемся гадать, что написано в программе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 15:50:31 |
|
||
|
Проблема с созданием ключа по формуле.....
|
|||
|---|---|---|---|
|
#18+
i'm sorry, если не развернул проблему. Суть : Исходя из невозможности в Access изменять значение первичного ключа я делаю такое поле, который вычисляться по формуле id - счетчик uid = <Константа>*1E6 + [id] (прописываю в Default Value) Константа - целое В результате сохранения таблицы - указанная ранее ошибка. Повторюсь - вMSSQLе все прошло на ура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 16:21:32 |
|
||
|
Проблема с созданием ключа по формуле.....
|
|||
|---|---|---|---|
|
#18+
squidпрописываю в Default Value Теперь понятно. Да, в Default Value так нельзя. Но я не понимаю, зачем держать два физических поля, если их значения элементарно вычисляются одно через другое. Я бы завел отдельно маленькую табличку с 1 полем и 1 записью, где и сидела бы эта константа. И если надо где-то в запросе показать <Константа>*1E6 + [id], то просто включаем в запрос эту маленькую табличку и пишем <Константа>*1E6 + [id]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 16:32:54 |
|
||
|
Проблема с созданием ключа по формуле.....
|
|||
|---|---|---|---|
|
#18+
Я вот только одного не понял :( Если поле "вычисляемое", то зачем его хранить в таблице, если можно вычислять (в нужных запросах)? И насчет того, что нельзя изменять значение PK - это тоже не верное утверждение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 16:34:07 |
|
||
|
Проблема с созданием ключа по формуле.....
|
|||
|---|---|---|---|
|
#18+
Ответы есть. и за это спасибо. 1. Строго говоря изменять счетчик можно, но простите это Вам не "Set Identity Insert ON" одной строкой прописать 2. А Вычисляемое поле uid - это и будет мой ключ. Но уникальный по все распределенной БД + он же и будет учавствовать в связях между таблицами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 16:52:37 |
|
||
|
Проблема с созданием ключа по формуле.....
|
|||
|---|---|---|---|
|
#18+
squidСтрого говоря изменять счетчик можно Этого мы не предлагали. squid2. А Вычисляемое поле uid - это и будет мой ключ. Но уникальный по все распределенной БД + он же и будет учавствовать в связях между таблицами. Тогда вот другая идея. Заводим поле, как и предполагалось, но ему в DefaultValue пишем только константу. Поле называем КодФилиала. И объявляем ключом (уникальным по всей распределенной БД) эти два поля вместе (КодФилиала и id). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 16:57:11 |
|
||
|
Проблема с созданием ключа по формуле.....
|
|||
|---|---|---|---|
|
#18+
И тогда заодно снимается проблема с миллионом, который когда-то будет достигнут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 16:58:41 |
|
||
|
Проблема с созданием ключа по формуле.....
|
|||
|---|---|---|---|
|
#18+
Это все понятно и просто, но суть то в том что а) Поле можно будет изменять б) RelationShips между таблицами как делить в случае с составным первичным ключем А ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:14:42 |
|
||
|
Проблема с созданием ключа по формуле.....
|
|||
|---|---|---|---|
|
#18+
squidа) Поле можно будет изменять На этот случай есть Security. squidб) RelationShips между таблицами как делить в случае с составным первичным ключем А ??? Через два поля Б !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:17:11 |
|
||
|
Проблема с созданием ключа по формуле.....
|
|||
|---|---|---|---|
|
#18+
Да это возможно спасибо. Два поля на ключ в одной таблице. И если таблицы связаны то подчиненная имеет уже 4 поля свой ключ + внешний. А запросы с объеденением таблиц будет писать одно удовольствие........ В техническом плане это решение, не спорю. Но потом я же с этим и работать буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:51:31 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32607604&tid=1673145]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
226ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 227ms |
| total: | 552ms |

| 0 / 0 |
