Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Возможен ли в FB 1.5.1 запрос Insert + Select??? / 25 сообщений из 39, страница 1 из 2
13.08.2004, 07:08:41
    #32647873
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
Пусть есть таблица test.
В Oracle можно реализовать следующий SQL запрос на клиенте:
Код: plaintext
1.
insert into test (pole) values('значение')
select Генератор.curval into :ID_записи from dual

А в FB такое возможно???
Код: plaintext
1.
insert into test (pole) values('значение')
select gen_id(Генератор, 0 ) from rdb$database
Как???
...
Рейтинг: 0 / 0
13.08.2004, 07:15:46
    #32647875
srf2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
получить то что хочешь?
поподробнее...
а то что-то с утра туго соображаю :)
...
Рейтинг: 0 / 0
13.08.2004, 07:19:46
    #32647877
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
srf2000получить то что хочешь?
ID вставленной записи в запросе insert-а, без дополнительного запроса select и это все на клиенте
...
Рейтинг: 0 / 0
13.08.2004, 07:23:38
    #32647881
srf2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
получи значение генератора из клиента и его вставляй в новую запись...
...
Рейтинг: 0 / 0
13.08.2004, 07:31:08
    #32647886
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
srf2000получи значение генератора из клиента и его вставляй в новую запись...
Не понял???
Уточню, сейчас выполняю запросы:
1) Делаю insert
2) Получаю ID вставленной записи
В Oracle это все реализуется в одном запросе
...
Рейтинг: 0 / 0
13.08.2004, 07:34:46
    #32647888
olol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
автор


CREATE GENERATOR myGen

CREATE TRIGGER myTrg FOR myTab
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
IF (new.myFld IS NULL) THEN new.myFld = GEN_ID(myGen, 1);
END

CREATE PROCEDURE myPrc RETURNS (myFld INTEGER)
AS BEGIN
myFld = GEN_ID(myGen, 1);
END


При добавлении из клиента myFld будет автоматически заполняться из myGen если не задано. (В этом случае это поле ExternalCalc)

Или сам его береш из myPrc...
...
Рейтинг: 0 / 0
13.08.2004, 07:40:10
    #32647895
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
ololПри добавлении из клиента myFld будет автоматически заполняться из myGen если не задано. (В этом случае это поле ExternalCalc)
Или сам его береш из myPrc...
Посмотрите пример для реализации поставленной задачи в Oracle - ЭТО ОДИН ЕДИНСТВЕННЫЙ ЗАПРОС
Генератор есть, ключевое поле тоже, триггер тоже, а ХП мне ВАЩЕ не нужна ради ДВУХ ЗАПРОСОВ
...
Рейтинг: 0 / 0
13.08.2004, 07:43:17
    #32647899
srf2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
1. получи значение генератора.
2. сделай инсерт

в чем проблема то?
...
Рейтинг: 0 / 0
13.08.2004, 07:44:52
    #32647902
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
srf2000в чем проблема то?
Еще раз повторю: нужно в одном SQL-запросе это сделать (и insert и select)!!!
...
Рейтинг: 0 / 0
13.08.2004, 07:56:45
    #32647911
olol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
автор

Если хочеш одним запросом то сделай ХП которая будет вставлять записи, присваивая полям данные и возвращать ее ID.

Может тебе еще нужно что-то типа:
insert into test (pole) values('значение') IN CREATE TABLE...
...
Рейтинг: 0 / 0
13.08.2004, 08:00:34
    #32647914
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
ololЕсли хочеш одним запросом то сделай ХП которая будет вставлять записи, присваивая полям данные и возвращать ее ID.
Уж лучше тоды я 2 запроса на клиенте напишу

olol Может тебе еще нужно что-то типа:
insert into test (pole) values('значение') IN CREATE TABLE...
Нет, таким гемором не занимаюсь... возможно пока )))
...
Рейтинг: 0 / 0
13.08.2004, 08:03:49
    #32647917
srf2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
в одном не сделаешь
...
Рейтинг: 0 / 0
13.08.2004, 09:26:29
    #32647978
Castor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
> wolverin
А что, триггера Before insert на поле ID в табл. test нет?
если есть то вообще не нужно ничего руками выбирать/вставлять в ID
...
Рейтинг: 0 / 0
13.08.2004, 09:39:11
    #32647989
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
wolverin srf2000получи значение генератора из клиента и его вставляй в новую запись...
Не понял???
Уточню, сейчас выполняю запросы:
1) Делаю insert
2) Получаю ID вставленной записи
В Oracle это все реализуется в одном запросе
То как ты написал в первом посте - это ДВА запроса (одним делается по другому). Скорее всего компоненты доступа позволяли в одном Query (компонент и запрос разные вещи!) выполнять скрипт, т.е. несколько запросов.
...
Рейтинг: 0 / 0
13.08.2004, 09:53:59
    #32648012
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
СерегаТо как ты написал в первом посте - это ДВА запроса (одним делается по другому). Скорее всего компоненты доступа позволяли в одном Query (компонент и запрос разные вещи!) выполнять скрипт, т.е. несколько запросов.
Уважаемый Вы с Oracle и расширением PL-SQL знакомы???
Если нет, то первый пример - это ОДИН ЗАПРОС , и компоненты доступа тут ваще не причем.
...
Рейтинг: 0 / 0
13.08.2004, 10:16:30
    #32648071
Лентяй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
Сейчас в FB нет выполнения блока операторов. Поэтому то, что ты хочешь, сделать нельзя. Соответственно есть два решения. Либо через SP, либо выдергивать значение генератора на клиента, а затем вставлять его. Это, кстати, автоматом реализовано в таких компонентах доступа как IBX и FIBPlus (по поводу других - не в курсе).
...
Рейтинг: 0 / 0
13.08.2004, 10:32:44
    #32648116
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
ЛентяйСейчас в FB нет выполнения блока операторов.
Спасибо, буду искать другие варианты
...
Рейтинг: 0 / 0
13.08.2004, 10:37:50
    #32648132
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
А ещё в оракле есть INSERT ... RETURNING и что ? ;)

В следующей версии FB будет возможность выполнять анонимные PSQL блоки (уже реализовано) и INSERT ... RETURNING (ещё не реализовано, но планируется).

Сейчас нужно или писать процедуру, или сначала дёргать генератор, а потом вставлять запись.
...
Рейтинг: 0 / 0
13.08.2004, 10:43:25
    #32648145
Dik76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
А такой вариант не катит?

Код: plaintext
insert into new_table select gen_id(sq_total,   1 ) from rdb$database
...
Рейтинг: 0 / 0
13.08.2004, 10:46:43
    #32648160
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
wolverinВ Oracle можно реализовать следующий SQL запрос на клиенте:
Код: plaintext
1.
insert into test (pole) values('значение')
select Генератор.curval into :ID_записи from dual
Кстати - это достаточно кривой код, можно огрести - и оракле не спасёт ;)
...
Рейтинг: 0 / 0
13.08.2004, 10:49:38
    #32648168
Dik76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
Погарячился я, ему ж идентификатор надо получить..
...
Рейтинг: 0 / 0
13.08.2004, 11:13:29
    #32648246
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
hvladВ следующей версии FB будет возможность выполнять анонимные PSQL блоки.
Кто такие??? Может у вас есть Тынц???

hvladКстати - это достаточно кривой код, можно огрести - и оракле не спасёт ;)
Чем код криФ хотел бы узнать, если не сложно???
...
Рейтинг: 0 / 0
13.08.2004, 11:19:55
    #32648273
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
wolverinУважаемый Вы с Oracle и расширением PL-SQL знакомы???
Если нет, то первый пример - это ОДИН ЗАПРОС , и компоненты доступа тут ваще не причем.
Pl-SQL это, уважаемый, не расширение (чего расширяется то?) а процедурный язык. А то что вы написали хоть где будет двумя запросами. И то что они идут последовательно дела не меняет. Вариант с одним запросом для Оракла написал hvlad.
...
Рейтинг: 0 / 0
13.08.2004, 11:38:19
    #32648330
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
wolverinКто такие??? Может у вас есть Тынц??? Тынцев у нас всегда есть ;)

wolverinЧем код криФ хотел бы узнать, если не сложно???Не сложно - Генератор.curval не лучший способ вставить новое значение в таблицу ;)
Или нужно всегда вставлять одно и то же ? ;)
...
Рейтинг: 0 / 0
13.08.2004, 12:15:17
    #32648434
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможен ли в FB 1.5.1 запрос Insert + Select???
hvladНе сложно - Генератор.curval не лучший способ вставить новое значение в таблицу ;)
Или нужно всегда вставлять одно и то же ? ;)
Да, нет. Все тут нормально. Некст вычисляется в тригере при вставке, а селест читает уже сгенеренное значение для возврата клиенту. Я так понял. И оба варианта (для Оракла и ИБ) полностью идентичны друг другу по сути.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Возможен ли в FB 1.5.1 запрос Insert + Select??? / 25 сообщений из 39, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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