|
|
|
Значение serial
|
|||
|---|---|---|---|
|
#18+
Как быть в такой ситуации: Имею таблицу вида id serial, name varchar(100). В процедуре добавляю новые записи. Значение ключа id в процедуре сразу нужно разнести в ряд других таблиц. Как его знать без выполнения запроса select id from table where name=''? Как стандартно это решается? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 19:20 |
|
||
|
Значение serial
|
|||
|---|---|---|---|
|
#18+
UCDI FAQ (искать на groups.google.com, ну и даже здесь есть). Q.>Как получить значение поля SERIAL только что вставленной записи? A.> Алексей Банасевич CREATE PROCEDURE fe_lastserial() RETURNING integer; return dbinfo('sqlca.sqlerrd1'); END PROCEDURE; Вызывать нужно СРАЗУ же после INSERT. Если на таблице есть триггеры, которые вставляют записи в другие таблицы, результатом будет значение SERIAL, вставленное в последнюю такую таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 19:46 |
|
||
|
Значение serial
|
|||
|---|---|---|---|
|
#18+
Если на таблице есть триггеры, которые вставляют записи в другие таблицы, результатом будет значение SERIAL, вставленное в последнюю такую таблицу. Связанных с таблицей триггеров нет. В таком случае функция всегда возвращает именно последнее значение для моей таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 20:03 |
|
||
|
Значение serial
|
|||
|---|---|---|---|
|
#18+
Спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 20:37 |
|
||
|
Значение serial
|
|||
|---|---|---|---|
|
#18+
kl003Как быть в такой ситуации: Имею таблицу вида id serial, name varchar(100). В процедуре добавляю новые записи. Значение ключа id в процедуре сразу нужно разнести в ряд других таблиц. Как его знать без выполнения запроса select id from table where name=''? Как стандартно это решается? Спасибо. kl003Связанных с таблицей триггеров нет. В таком случае функция всегда возвращает именно последнее значение для моей таблицы? Можно ещё так (в этом случае insert в триггере не важен): Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 22:09 |
|
||
|
Значение serial
|
|||
|---|---|---|---|
|
#18+
Enlighten me Код: plaintext 1. 2. только обязательно lock mode row и уникальный индекс. В 9.4 появились сиквенсы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 10:05 |
|
||
|
Значение serial
|
|||
|---|---|---|---|
|
#18+
Enlighten medelete from 'informix'.serial_factory ; Внимание! Если вдруг придется базульку перегружать с помощью dbexport/dbimport, то после перезагрузки процедурина make_id () снова вернет 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 10:42 |
|
||
|
Значение serial
|
|||
|---|---|---|---|
|
#18+
olleg Enlighten medelete from 'informix'.serial_factory ; Внимание! Если вдруг придется базульку перегружать с помощью dbexport/dbimport, то после перезагрузки процедурина make_id () снова вернет 1 О, слона-то я и не приметил. Удалять в процедуре нельзя вообще, потому что на чужие локи натыкаться будешь постоянно, однопользовательская работа получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 11:48 |
|
||
|
Значение serial
|
|||
|---|---|---|---|
|
#18+
2Журавлев Денис Про lock mode row, согласен. Так и работает. А зачем уникальный индекс по одному значению? Про удалять нельзя... Хм.. В принципе, вопрос не принципиальный, таблица с одним полем много места не сожрет... Хотя, примерно такой алгоритм (с удалением) работает в компании N (> 100 пользователей, 24х7, 10^1 - 10^3 новых экзепляров сущностей (срабатывания процедуры) ежедневно) уже много лет, ни о каких проблемах с выдачей serial я не слышал. 2olegg Сначала удаление, потом, сразу, добавление. В таблице всегда есть одно значение. В этом случае, при экспорте / импорте счётчик serial для таблицы всё равно обнулится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 12:20 |
|
||
|
Значение serial
|
|||
|---|---|---|---|
|
#18+
Enlighten me2Журавлев Денис Про удалять нельзя... Хм.. В принципе, вопрос не принципиальный, таблица с одним полем много места не сожрет... Где я сказал что удалять нельзя? Enlighten me Хотя, примерно такой алгоритм (с удалением) работает в компании N (> 100 пользователей, 24х7, 10^1 - 10^3 новых экзепляров сущностей Может отдельный поток в сервере app генерирует ключи для всех? Или я дурак и/или тормоз и в инфоркмикс есть аутономус транзакшин? Enlighten me (срабатывания процедуры) ежедневно) уже много лет, ни о каких проблемах с выдачей serial я не слышал. Это странно. Enlighten me 2olegg Сначала удаление, потом, сразу, добавление. В таблице всегда есть одно значение. В этом случае, при экспорте / импорте счётчик serial для таблицы всё равно обнулится? Нет, не обнулится. Точнее он установится в значение той одной строки при загрузке. Все будет хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 12:37 |
|
||
|
Значение serial
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисГде я сказал что удалять нельзя? Журавлев ДенисУдалять в процедуре нельзя вообще, потому что на чужие локи натыкаться будешь постоянно, однопользовательская работа получится. Журавлев ДенисМожет отдельный поток в сервере app генерирует ключи для всех? При встрече распрошу подробнее, но, ИМХО, нет. Журавлев ДенисЭто странно. Никакой фантастики (фантазирования). IDS 7.31, Solaris, могучий sun c туевой хучей процессоров. Как я уже говорил, о подробностях расспрошу и отпишу, если не забуду... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 12:50 |
|
||
|
|

start [/forum/topic.php?fid=44&msg=33026324&tid=1609053]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 363ms |

| 0 / 0 |
