|
VFP8+MS SQL Server и автоинкрементарный ID...
|
|||
---|---|---|---|
#18+
Ситуация проста. Пишу клиента на Фоксе 8. Есть MS SQL Server (или MySQL). Там 2 таблицы. В одной - клиенты (уникальные) и в другой - их счета (может быть много). В первой таблице при добавлении новой записи автоматически образуется ID. Во вторую таблицу добавляются записи с этим ID. Проблема в том, чтобы при добавлении записи в первую таблицу узнать какой ID образовался. НО КАК???? Есть ли вообще такая возможность? Если можно, напишите фрагмент кода... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2003, 16:18 |
|
VFP8+MS SQL Server и автоинкрементарный ID...
|
|||
---|---|---|---|
#18+
В MS SQL есть такая функция SCOPE_IDENTITY( ) Возвращай это значение на клиента после вставки в первую таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2003, 16:23 |
|
VFP8+MS SQL Server и автоинкрементарный ID...
|
|||
---|---|---|---|
#18+
Спасибо! Не подскажешь как это будет выглядеть в коде? MyCon=sqlconnect('ODBC_Driver','login','password') =sqlexec(MyCon,'INSERT table1(a,b,c,d) VALUES (a,b,c,d)') =sqlexec(MyCon,'SCOPE_IDENTITY()','new_id') Так? А если таблицы одновременно юзают 50 пользователей, то не получится ли так, что я получу ID записи введёной другим пользователем на доли секунды позже меня? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2003, 16:59 |
|
VFP8+MS SQL Server и автоинкрементарный ID...
|
|||
---|---|---|---|
#18+
Я использую вызов хранимых процедур SQL Код Fox Код: plaintext 1.
Код SQL Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2003, 18:08 |
|
VFP8+MS SQL Server и автоинкрементарный ID...
|
|||
---|---|---|---|
#18+
А если таблицы одновременно юзают 50 пользователей, то не получится ли так, что я получу ID записи введёной другим пользователем на доли секунды позже меня? Выдержка из BOL SCOPE_IDENTITY Returns the last IDENTITY value inserted into an IDENTITY column in the same scope. A scope is a module -- a stored procedure, trigger, function, or batch. Thus, two statements are in the same scope if they are in the same stored procedure, function, or bat Вообщем если кратко перевести- проблем не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2003, 18:13 |
|
VFP8+MS SQL Server и автоинкрементарный ID...
|
|||
---|---|---|---|
#18+
Всем большое спасибо! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2003, 18:21 |
|
VFP8+MS SQL Server и автоинкрементарный ID...
|
|||
---|---|---|---|
#18+
Упс! Стал пробовать - данные добавляются, а ID не возвращается. Сервер: CREATE PROCEDURE [dbo].[al_proverka] @a char(10),@b int,@newid int output As Begin INSERT aa1(a2,a3) VALUES (@a,@b) Select @newid=SCOPE_IDENTITY( ) End GO Фокс: newid=0 =sqlexec(MyConn,'Exec Albert.dbo.al_proverka ?a,?b,?newid') Возвращается 0, хотя ID образуются разные. Что не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2003, 00:33 |
|
VFP8+MS SQL Server и автоинкрементарный ID...
|
|||
---|---|---|---|
#18+
OUTPUT переменная передается по ссылке Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2003, 10:12 |
|
|
start [/forum/topic.php?fid=41&msg=32229666&tid=1598065]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 165ms |
0 / 0 |