|
|
|
генерация primary key до вставки
|
|||
|---|---|---|---|
|
#18+
Понятия не имею, что Вы там сделали, но если создать DataWindow на основе этой таблицы по запросу Код: plaintext Указать Allow Updates, выбрать таблиуц bu_test, в updateable columns выбрать data, в unique и identity - id, то зайдя на вкладку preview, внеся пару строчек и сохраня в поле ID мы получим значения автоинкремента. И в программе точно также. Какая версия PB? savosin_sergey В обоих случая нету значения identity-поля, как это утверждалось здесь. К вашему случаю это не имеет ровно никакого отношения. savosin_sergey Хотя бы из-за этого генерация id-поля вручную имеет право на жизнь, как работающий вариант.Но уж точно не Ваш вариант. savosin_sergey Альтернатива считыванию @@identity до сохранения..СКОЛЬКО РАЗ МОЖНО ГОВОРИТЬ, ЧТО @@identity НУЖНО СЧИТЫВАТЬ ПОСЛЕ СОХРАНЕНИЯ!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 22:50 |
|
||
|
генерация primary key до вставки
|
|||
|---|---|---|---|
|
#18+
Но уж точно не Ваш вариант. Локшин Марк savosin_sergeyАльтернатива считыванию @@identity до сохранения.. СКОЛЬКО РАЗ МОЖНО ГОВОРИТЬ, ЧТО @@identity НУЖНО СЧИТЫВАТЬ ПОСЛЕ СОХРАНЕНИЯ!!! Да, я ошибся. Хотя имел ввиду "после созранения", полностью в вами, Марк согласен. Всязи с этим хотел бы обсудить такой вариант: - работают два пользователя с одним документом (допустим, состоящим из одной таблицы tbl1 (id int identity, data varchar(50)) - первый пользователь добавляет строку, заполянет жмёт сохранить - при этом второй пользователь в этом же документе добавляет строку, жмёт сохранить - первый пользователь после своего удачного сохранения считывает @@identity (например, на updateend()) -- и получает id для другой записи (записи, вставленной вторым пользователем) =>возможен конфликт (смотрим сюда) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 12:23 |
|
||
|
генерация primary key до вставки
|
|||
|---|---|---|---|
|
#18+
Локшин МаркУказать Allow Updates, выбрать таблиуц bu_test, в updateable columns выбрать data, в unique и identity - id, то зайдя на вкладку preview, внеся пару строчек и сохраня в поле ID мы получим значения автоинкремента. И в программе точно также. Какая версия PB? pb9.01 build 7275 действительно, в dw-painter'е работает.. надо будет простое окно потестить, а то все мои тесты проходят не на обычных DW-control'ах, а на специальных наследниках (технология фирмы. аналог PFC) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 12:27 |
|
||
|
генерация primary key до вставки
|
|||
|---|---|---|---|
|
#18+
savosin_sergeyНо уж точно не Ваш вариант. Локшин Марк savosin_sergeyАльтернатива считыванию @@identity до сохранения.. СКОЛЬКО РАЗ МОЖНО ГОВОРИТЬ, ЧТО @@identity НУЖНО СЧИТЫВАТЬ ПОСЛЕ СОХРАНЕНИЯ!!! Да, я ошибся. Хотя имел ввиду "после созранения", полностью в вами, Марк согласен. Всязи с этим хотел бы обсудить такой вариант: - работают два пользователя с одним документом (допустим, состоящим из одной таблицы tbl1 (id int identity, data varchar(50)) - первый пользователь добавляет строку, заполянет жмёт сохранить - при этом второй пользователь в этом же документе добавляет строку, жмёт сохранить - первый пользователь после своего удачного сохранения считывает @@identity (например, на updateend()) -- и получает id для другой записи (записи, вставленной вторым пользователем) =>возможен конфликт (смотрим сюда) @@IDENTITY вообще то сессионная переменная, то есть для каждой сессии в ней будет значение id последней вставленной записи в сессии. Поэтому о каких конфликтах может идти речь, лично я не понимаю. У Вас что - 2 программы через одну сессию что ли работают ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 12:36 |
|
||
|
генерация primary key до вставки
|
|||
|---|---|---|---|
|
#18+
savosin_sergey- работают два пользователя с одним документом (допустим, состоящим из одной таблицы tbl1 (id int identity, data varchar(50)) - первый пользователь добавляет строку, заполянет жмёт сохранить - при этом второй пользователь в этом же документе добавляет строку, жмёт сохранить - первый пользователь после своего удачного сохранения считывает @@identity (например, на updateend()) -- и получает id для другой записи (записи, вставленной вторым пользователем) =>возможен конфликт (смотрим сюда) Гм. Там я говорил про кривость реализации получения значения автоинкрементного поля в PowerBuilder'е. Но они это осознали Локшин МаркСм. help по AtAtIdentity DBParm parameter правда только к 7 версии PB. В случае его задания ситуация, подобная приведенной в ссылке принципиально невозможна. savosin_sergeyдействительно, в dw-painter'е работает.. надо будет простое окно потестить, а то все мои тесты проходят не на обычных DW-control'ах, а на специальных наследниках (технология фирмы. аналог PFC) О чем я и говорил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 12:53 |
|
||
|
генерация primary key до вставки
|
|||
|---|---|---|---|
|
#18+
ASCRUS@@IDENTITY вообще то сессионная переменная, то есть для каждой сессии в ней будет значение id последней вставленной записи в сессии. Действительно! спасибо. просто я невнимательно прочитал документацию. SCOPE_IDENTITY тоже ничего msSqlServer2k online books@@IDENTITY and SCOPE_IDENTITY will return the last identity value generated in any table in the current session. However, SCOPE_IDENTITY returns the value only within the current scope; @@IDENTITY is not limited to a specific scope. IDENT_CURRENT is not limited by scope and session; it is limited to a specified table. IDENT_CURRENT returns the identity value generated for a specific table in any session and any scope. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2005, 14:07 |
|
||
|
|

start [/forum/topic.php?fid=15&startmsg=33039448&tid=1338384]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
150ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 438ms |

| 0 / 0 |
