powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / sqlca.sqlerrd[2]
13 сообщений из 13, страница 1 из 1
sqlca.sqlerrd[2]
    #33109063
serg_snk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеем ОДИН запрос, состоящий из двух подзапросов.

В первом инсертится запись. Во втором тоже инсертиться запись, но нужно id (serial) из первой записи.

Как это сделать средствами SQL?


Если возможно, то с примером. Спасибо!
...
Рейтинг: 0 / 0
sqlca.sqlerrd[2]
    #33109181
Enlighten me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serg_snkИмеем ОДИН запрос, состоящий из двух подзапросов.

В первом инсертится запись. Во втором тоже инсертиться запись, но нужно id (serial) из первой записи.

Как это сделать средствами SQL?


Если возможно, то с примером. Спасибо! Что значит, в запросе инсертится запись? У вас прописан триггер на селект?
...
Рейтинг: 0 / 0
sqlca.sqlerrd[2]
    #33109257
serg_snk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеем таблицу:

client_email
id :serial;
email: lvarchar;
test: lvarchar;

и
test
client_id: integer;


Что вроде

INSERT INTO client_email (email, test) VALUES ('sergey@ua.fm', 'test');
INSERT INTO test(client_id) VALUES (sqlca.sqlerrd[2]);

Возможно такое ???
...
Рейтинг: 0 / 0
sqlca.sqlerrd[2]
    #33109354
Enlighten me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где выполняются эти два селекта?
В хранимой процедуре? В клиентском приложении?

В любом случае, триггер на инсерт в первую таблицу, ИМХО, логичнее..
...
Рейтинг: 0 / 0
sqlca.sqlerrd[2]
    #33109490
serg_snk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В клиентском

БЕЗ ХРАНИМЫХ и ТРИГЕРОВ. ТРИГЕРА НЕ КАТЯТ (в моем случае, там еще есть другая хаботня :) )
МОЖНО ЛИ ОБРАТИТЬСЯ К sqlca.sqlerrd[2] в SQL-е ???
...
Рейтинг: 0 / 0
sqlca.sqlerrd[2]
    #33109497
Valentyn Pidburtnyi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg_snk
INSERT INTO client_email (email, test) VALUES ('sergey@ua.fm', 'test');
INSERT INTO test(client_id) VALUES (sqlca.sqlerrd[2]);
...
Рейтинг: 0 / 0
sqlca.sqlerrd[2]
    #33109505
Valentyn Pidburtnyi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg_snk
INSERT INTO client_email (email, test) VALUES ('sergey@ua.fm', 'test');
INSERT INTO test(client_id) VALUES (sqlca.sqlerrd[2]);


INSERT INTO client_email (email, test) VALUES ('sergey@ua.fm', 'test');
INSERT INTO test(client_id) VALUES (dbinfo('sqlca.sqlerrd1'));
...
Рейтинг: 0 / 0
sqlca.sqlerrd[2]
    #33109585
Enlighten me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня, на 7.31 ситуация вот такая -
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create temp table a (id serial, note char( 10 )) with no log ;
create  temp table b (a_id int)  with no log ;

insert into a(note) values ('Value #1') ;
--insert into b values(dbinfo('sqlca.sqlerrd1')) ; -- syntax error
insert into b select dbinfo('sqlca.sqlerrd1') from systables where tabid =  1  ; 

select * from a ;
select * from b;
...
Рейтинг: 0 / 0
sqlca.sqlerrd[2]
    #33111390
serg_snk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Enlighten meУ меня, на 7.31 ситуация вот такая -
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create temp table a (id serial, note char( 10 )) with no log ;
create  temp table b (a_id int)  with no log ;

insert into a(note) values ('Value #1') ;
--insert into b values(dbinfo('sqlca.sqlerrd1')) ; -- syntax error
insert into b select dbinfo('sqlca.sqlerrd1') from systables where tabid =  1  ; 

select * from a ;
select * from b;




На десятке выдает: 0
...
Рейтинг: 0 / 0
sqlca.sqlerrd[2]
    #33111440
Enlighten me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serg_snkНа десятке выдает: 0 Не верю! (с) Станиславский! ;-))

Если выполняете "одним запросом", как вы в начале выразились, то вывод должен быть вот такой:

Код: plaintext
1.
2.
id	note
1	Value #1
Код: plaintext
1.
2.
a_id
1

Попробуйте выполнить в каком-нибудь sql-редакторе.
...
Рейтинг: 0 / 0
sqlca.sqlerrd[2]
    #33111509
serg_snk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Enlighten me serg_snkНа десятке выдает: 0 Не верю! (с) Станиславский! ;-))

Если выполняете "одним запросом", как вы в начале выразились, то вывод должен быть вот такой:

Код: plaintext
1.
2.
id	note
1	Value #1
Код: plaintext
1.
2.
a_id
1

Попробуйте выполнить в каком-нибудь sql-редакторе.

Правда :)

ЗАПРОС:
create temp table a (id serial, note char(10)) with no log ;
create temp table b (a_id int) with no log ;

insert into a(note) values ('Value #1') ;
--insert into b values(dbinfo('sqlca.sqlerrd1')) ; -- syntax error
insert into b select dbinfo('sqlca.sqlerrd1') from systables where tabid = 1 ;

select * from a ;
select * from b;


ВЫДАЕТ:

Output 1

id Note
1 Value#1

Output 2

A id
0
...
Рейтинг: 0 / 0
sqlca.sqlerrd[2]
    #33111534
serg_snk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно не буду извращаться.

id буду выгребать PHP-ой
Будет два отдельных запроса...


Всем спасибо :)
...
Рейтинг: 0 / 0
sqlca.sqlerrd[2]
    #33112125
Ilya Kulagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg_snk
На десятке выдает: 0

Не знаю, как там к 10, а к 9.21 я в своё время озаботился и выгреб с сайта полностью документацию в .pdf. Есть в книге "SQL Syntax" отдельный раздел "как получить id последней вставленной записи". В описании функции dbinfo. И всё работает. Что характерно.

Кстати, в php ifx_getsqlca используется ровно эта же самая функция. И пример получения serial последней вставленной записи тоже есть...
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / sqlca.sqlerrd[2]
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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