powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / получение ID после Insert
16 сообщений из 16, страница 1 из 1
получение ID после Insert
    #37202011
Лампочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если я в билдере в скрипте делаю
INSERT INTO table1(name1, name2) values(value1, value2)
в таблицу table1 с инкрементным первичным ключом (MS SQL),
можно ли как-то здесь же вернуть в скрипт ID вставленной строки? (Что-то вроде ораклового Returning)
...
Рейтинг: 0 / 0
получение ID после Insert
    #37202071
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
INSERT INTO table1(name1, name2) values(value1, value2) ;
select max(id) into :ll_id from table1;
commit;
...
Рейтинг: 0 / 0
получение ID после Insert
    #37202110
Лампочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VanoR, нееее. В считанные миллисекунды куча пользователей может навставлять в эту таблицу еще записей. И при отборе максимума я получу совсем не ту строку, которую вставила.
...
Рейтинг: 0 / 0
получение ID после Insert
    #37202155
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я специально commit внизу добавил... тобишь обе операции будут производиться в пределах одной транзакции, должно нормально все возвращаться, если таблица блокируется после инсерта для других пользователей.
...
Рейтинг: 0 / 0
получение ID после Insert
    #37202175
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если использвать DataStore, то:
Поставьте (выберите из списка) эту колонку в Identity column и уберите из Updateable Column (если она там отмечена).
После выполнения метода Update() там появляется значение автоматически.
В ASA для колонок с autoincrement-ом это работает.
...
Рейтинг: 0 / 0
получение ID после Insert
    #37202179
Лампочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VanoR, нет, не блокируется. Пользователи в банке должны иметь возможность делать все и всегда)
...
Рейтинг: 0 / 0
получение ID после Insert
    #37202269
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛампочкаVanoR, нет, не блокируется. Пользователи в банке должны иметь возможность делать все и всегда)
а вы проверьте :)
блокироваться должно, тем более в банке.... одна логическая операция должна выполняться в пределах одной транзакции, с соответствующими блокировками, а то вы так денег точно не досчитаетесь там.

ведь то, что я написал не выполняется часами и блокировку другие пользователи и не заметят.
...
Рейтинг: 0 / 0
получение ID после Insert
    #37202289
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
06.04.2011 13:04, Лампочка пишет:

> если я в билдере в скрипте делаю
> INSERT INTO table1(name1, name2) values(value1, value2)
> в таблицу table1 с инкрементным первичным ключом (MS SQL),
> можно ли как-то здесь же вернуть в скрипт ID вставленной строки?

select @@identity отменили ;)?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
получение ID после Insert
    #37202302
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim200006.04.2011 13:04, Лампочка пишет:

> если я в билдере в скрипте делаю
> INSERT INTO table1(name1, name2) values(value1, value2)
> в таблицу table1 с инкрементным первичным ключом (MS SQL),
> можно ли как-то здесь же вернуть в скрипт ID вставленной строки?

select @@identity отменили ;)?

ну да... или так, но опять же в одной транзакции нужно запрашивать (до commit)
...
Рейтинг: 0 / 0
получение ID после Insert
    #37206046
maniac85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я использую SCOPE_IDENTITY
при этом insert выкидываю в хранимую процедуру, там же беру SCOPE_IDENTITY и возвращаю его как выходной параметр
вызов тогда становится совсем красивым

SQLCA.InsertCard(ll_cardid)

в ll_cardid будет искомый айдишник

P.S. считаю немного странным использовать max при наличии в MS SQL аж трех для этого стандартных способов SCOPE_IDENTITY, IDENT_CURRENT и @@IDENTITY
...
Рейтинг: 0 / 0
получение ID после Insert
    #37208735
Лампочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, меня как раз @@identity интересовал! хотя и с помощью Reselectrow тоже пока работает..
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
получение ID после Insert
    #38683177
Фотография paha4444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VanoRINSERT INTO table1(name1, name2) values(value1, value2) ;
select max(id) into :ll_id from table1;
commit;

Скажите а как сделать что бы после получения id сделать опять INSERT, только в другую таблицу, и вставить в эту таблицу полученный id из SELECT?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
 INSERT INTO `#__objects` (
                    `added_by`, 
                    `metro_name`, 
                    `raion`,
                    `dead_year`,
                    `dead_kvartal`,
                    `dead_mounth`,
                    `desc`,
                     
                    `address`, 
                    `address_in_map`,
                    `modified`,
                    `modified_by`,
                    `created`,
                    
                    `zastroy`,
                    `name`,
                    `korpus`,
                    `type`,
                    `flors`,
                    `building_id`
                    )
                    
                    VALUES   (
                    '956', 
                    '$metro', 
                    '$rayon',
                    '$dead_year',
                    '$dead_kvartal',
                    '$dead_mounth',
                    '$desc',
                    '$address', 
                    '$address_in_map',
                    'NOW()',
                    '956',
                    'NOW()', 
                    '$builder_name',
                    '$nazvanie_doma',
                    '$corp',
                    '$buildingtype', 
                    '$floors',
                    '$building_id'
                    )
                    ; 
//Вот я вставляю запись.
//Теперь мне нужно получить id вставленной записи и вставить этот id в другую таблицу

select max(id) into :new_object_id from #__objects;

INSERT INTO `#__object_photos` (`object_id`,`full`,`apartment_id`,`need_parse`) VALUES ('new_object_id','$image','$apartment_id','1')
вот тут new_object_id будет работать? 

commit; 
...
Рейтинг: 0 / 0
получение ID после Insert
    #38683494
VFl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paha4444select max(id) into :new_object_id from #__objects;


Вообще max(id) это все же не совсем верно, может вернутся не то, несмотря на трансакцию. Лучше использовать функцию SCOPE_IDENTITY(), она возвращает последнее IDENTITY конкретно в вашем коннекте:

Код: sql
1.
select top 1 SCOPE_IDENTITY()  into :new_object_id from #__objects;
...
Рейтинг: 0 / 0
получение ID после Insert
    #38683673
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VFlнесмотря на трансакцию
Как отличить финансиста от программиста?
По тому, говорит ли он трансакция или транзакция
...
Рейтинг: 0 / 0
получение ID после Insert
    #38683762
VFl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,

разоблачили :) По образованию действительно экономист. Но в Германии российские экономисты не котируются, пришлось переквалифицироваться.
...
Рейтинг: 0 / 0
получение ID после Insert
    #38686639
Фотография paha4444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VFlpaha4444select max(id) into :new_object_id from #__objects;


Вообще max(id) это все же не совсем верно, может вернутся не то, несмотря на трансакцию. Лучше использовать функцию SCOPE_IDENTITY(), она возвращает последнее IDENTITY конкретно в вашем коннекте:

Код: sql
1.
select top 1 SCOPE_IDENTITY()  into :new_object_id from #__objects;



Сделал так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
                    $sql .= " INSERT INTO `#__objects` (
                    `added_by`, 
                    `metro_name`, 
                    `raion`,
                    `dead_year`,
                    `dead_kvartal`,
                    `dead_mounth`,
                    `desc`,
                     
                    `address`, 
                    `address_in_map`,
                    `modified`,
                    `modified_by`,
                    `created`,
                    
                    `zastroy`,
                    `name`,
                    `korpus`,
                    `type`,
                    `flors`,
                    `building_id`
                    )
                    
                    VALUES   (
                    '956', 
                    '$metro', 
                    '$rayon',
                    '$dead_year',
                    '$dead_kvartal',
                    '$dead_mounth',
                    '$desc',
                    '$address', 
                    '$address_in_map',
                    'NOW()',
                    '956',
                    'NOW()', 
                    '$builder_name',
                    '$nazvanie_doma',
                    '$corp',
                    '$buildingtype', 
                    '$floors',
                    '$building_id'
                    )
                    ; 
                    ";
                    if($image){
                        $sql .= "INSERT INTO `#__object_photos` (`object_id`,`full`,`need_parse`) VALUES (LAST_INSERT_ID(),'$image','2');";
                        $counter++;
                        //$counter4++;
                    }



LAST_INSERT_ID()
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / получение ID после Insert
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]