powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Создание auto-increment в IBExpert
32 сообщений из 32, показаны все 2 страниц
Создание auto-increment в IBExpert
    #38887765
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создаю auto-increment поле в IBExpert, генерирует такой скрипт:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
create trigger procedures_value_sets_bi for procedures_value_sets
active before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(,1);
end



Но выполнить не может, вылетает ошибка:
Код: plaintext
1.
2.
3.
4.
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 6, column 21.
,.

В чём может быть проблема?

Крик ума: Вообще все СУБД кроме PostgreSQL - это ужас. :) Вот и в FB проблема вставить несколько строк, вот этот, например, совет с EXECUTE BLOCK не работает: http://www.firebirdfaq.org/faq336/

--
С уважением,
Алексей.
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887770
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gen_id(здесь_должно_быть_имя_генератора,1)

создайте генератор и впишите

и вставка нормально работает
вы просто не всех кошек готовить умеете
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887771
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krapotkin, с кошками - это понятно :) Научите? за генератор спасибо
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887777
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey KКрик ума: ... Вот и в FB проблема вставить несколько строк, вот этот, например, совет с EXECUTE BLOCK не работает: http://www.firebirdfaq.org/faq336/ Может то не ум кричал ?
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887780
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, ум, Душе это не очень интересно я думаю, она всё может решить :) Как всё таки вставить несколько строк сразу. В других СУБД такого маразма нет.
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887792
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey KКак всё таки вставить несколько строк сразу.
Насколько "сразу"? В одной транзакции тебя не устроит?

Стоп, ты вообще о транзакциях слышал когда-нибудь?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887801
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey K,

ум не говорит "не работает". Ум говорит что пробовал и что получил в ответ.
Ум не считает маразмом то, что он не осилил с первого взгляда.
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887836
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, :) 15 лет с базами, как ты думаешь: слышал или нет? В PostgreSQL я могу выполнить кучу команд за раз без транзакций. Здесь всё время нужно транзакции использовать почему-то. Пример выше из официальной документации не работает, ошибку выдаёт. Какие ещё есть варианты?
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887838
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladУм не считает маразмом то, что он не осилил с первого взгляда.
А мой вот считает. :) Так как вставить несколько строк за раз?! В сети у кучи людей подобные вопросы и проблемы.
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887842
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey K, вот например: http://stackoverflow.com/questions/6256678/how-do-i-use-transactions-in-firebird - и вменяемого решения нет
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887859
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey KВ других СУБД такого маразма нет.
ты не представляешь себе, сколько маразма в "других СУБД".

Aleksey KВ PostgreSQL я могу выполнить кучу команд за раз без транзакций. Здесь всё время нужно транзакции использовать почему-то.
потому что в нормальной СУБД все выполняется только в контексте транзакций. Вне контекста транзакций нельзя выполнить ничего. Иначе это не ACID-СУБД. Если ты транзакции не стартуешь и не завершаешь, значит за тебя кто-то это делает - драйвер, инструмент, СУБД, или еще что-то. Сюрприз - сам по себе Firebird не стартует и не завершает транзакции, потому что считает это прерогативой клиента (инструмента, драйвера и т.п.).

Aleksey KПример выше из официальной документации не работает, ошибку выдаёт.
firebirdfaq.org - ни разу не официальная документация.
"не работает" - тут такие отмазки не катят. нужно приводить сообщение об ошибке.
официальная документация тут
http://www.firebirdsql.org/file/documentation/reference_manuals/Firebird-Language-Reference-Russian.pdf
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887862
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey KТак как вставить несколько строк за раз?! В сети у кучи людей подобные вопросы и проблемы.

никак. у Firebird нет такого SQL оператора. insert вставляет одну строку "за раз", аминь. Несколько insert-ов можно вписать в скрипт (это не один SQL оператор, и скрипты выполняют инструменты или программы), или в Execute Block. Или в процедуру или триггер.
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887876
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvты не представляешь себе, сколько маразма в "других СУБД".
У меня есть с чем сравнивать: Firebird, MS SQL, MySQL - полно маразма, PostgreSQL - обожаю, SQLite - слабовато, Oracle - ещё не пробовал.

kdvЕсли ты транзакции не стартуешь и не завершаешь, значит за тебя кто-то это делает - драйвер, инструмент, СУБД, или еще что-то.
Это понятно, просто в нормальных БД - это работает удобно для пользователя, а здесь - жуть.

kdvникак. у Firebird нет такого SQL оператора. insert вставляет одну строку "за раз", аминь.
Спасибо за вменяемый ответ.

kdv"не работает" - тут такие отмазки не катят. нужно приводить сообщение об ошибке.
Лови:
Код: plaintext
1.
2.
3.
4.
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, column 5.
term.
Что-то понял из этой ошибки?!
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
set term ^ ;
EXECUTE BLOCK AS BEGIN
    INSERT INTO PROCEDURES_VALUE_SETS (PROCEDURE_VALUE_SET, DESCRIPTION)
    VALUES ('bla-bla-bla-bla-bla-bla-bla-bla', 'bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla');
    INSERT INTO PROCEDURES_VALUE_SETS (PROCEDURE_VALUE_SET, DESCRIPTION)
    VALUES ('bla-bla-bla-bla-bla-bla-bla-bla', 'bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla');
    INSERT INTO PROCEDURES_VALUE_SETS (PROCEDURE_VALUE_SET, DESCRIPTION)
    VALUES ('bla-bla-bla-bla-bla-bla-bla-bla', 'bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla');
....
END^




kdvили в Execute Block.
Не работает, см. выше.
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887891
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey KЧто-то понял из этой ошибки?!
Что тебе лучше вернуться к слонам. Раз уж не видишь отличия в буквах "isql" против "dsql".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887917
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЧто тебе лучше вернуться к слонам. Раз уж не видишь отличия в буквах "isql" против "dsql".
Dimitry Sibiryakov, это сейчас не от меня зависит. Я говорил про конкретную задачу: выполнение нескольких INSERT в IBExpert. В чём отличие "isql" против "dsql"? Почему столько проблем при выполнении простой команды?!
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887923
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey KПочему столько проблем при выполнении простой команды?!
Потому что читать доку и разбираться - лень, вот и раскидываешь какашки. Ты бы хоть показал куда и как ты insert делаешь. Может у тебя как с AI проблема...
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887925
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey KЛови:
Код: plaintext
1.
2.
3.
4.
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, column 5.
term.
Что-то понял из этой ошибки?!
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
set term ^ ;
EXECUTE BLOCK AS BEGIN
    INSERT INTO PROCEDURES_VALUE_SETS (PROCEDURE_VALUE_SET, DESCRIPTION)
    VALUES ('bla-bla-bla-bla-bla-bla-bla-bla', 'bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla');
    INSERT INTO PROCEDURES_VALUE_SETS (PROCEDURE_VALUE_SET, DESCRIPTION)
    VALUES ('bla-bla-bla-bla-bla-bla-bla-bla', 'bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla');
    INSERT INTO PROCEDURES_VALUE_SETS (PROCEDURE_VALUE_SET, DESCRIPTION)
    VALUES ('bla-bla-bla-bla-bla-bla-bla-bla', 'bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla');
....
END^




kdvили в Execute Block.
Не работает, см. выше.

Я многое понял. Открывай доку с оператором term, вставай к зеркалу и читай вслух.

p.s. хочется написать книгу "Firebird для чайников и беженцев с других СУБД". Бестселлер будет....
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887927
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarЯ многое понял. Открывай доку с оператором term, вставай к зеркалу и читай вслух.
Прочитал, сделал, всё равно ошибка.

Gallemarхочется написать книгу "Firebird для чайников и беженцев с других СУБД". Бестселлер будет....
Пиши :)
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887928
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar, в доке про term тоже самое, что и по ссылке выше - результат тот же - не работает.
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887929
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! Вот это сработало:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
EXECUTE BLOCK AS
BEGIN
    INSERT INTO PROCEDURES_VALUE_SETS (PROCEDURE_VALUE_SET, DESCRIPTION)
    VALUES ('bla-bla-bla-bla-bla-bla-bla-bla', 'bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla');
    INSERT INTO PROCEDURES_VALUE_SETS (PROCEDURE_VALUE_SET, DESCRIPTION)
    VALUES ('bla-bla-bla-bla-bla-bla-bla-bla', 'bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla');
    INSERT INTO PROCEDURES_VALUE_SETS (PROCEDURE_VALUE_SET, DESCRIPTION)
    VALUES ('bla-bla-bla-bla-bla-bla-bla-bla', 'bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla');
....
END;


Переключило на любимый PSQL и выполнило всё, вставило 19 строк. Умники, и надо было писать столько текста вместо того, чтобы просто указать правильный синтаксис 3 строчек?!

За доку спасибо.
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887934
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey K Умники, и надо было писать столько текста вместо того, чтобы просто указать правильный синтаксис 3 строчек?!

За доку спасибо.
Умники не получают удовлетворения от обучения нечитающих неофитов.
Хочешь чтобы разжевали - милости просим http://www.ibase.ru/crs_3d.htm
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38887993
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey K,

специально для тебя разжёвываю, если это из доки непонятно. Нет оператора SET TERM в Firebird. Это команда isql для того чтобы переключить разделитель операторов. Собственно EXECUTE BLOCK это отдельный оператор и если он выполняется как запрос, то никаких разделителей не нужно. ISQL на самом деле не выполняет несколько операторов за раз. Точка с запятой ";" там как раз и служит для того чтобы он мог разделить скрипт на отдельные операторы DSQL. Поскольку в PSQL точка запятой служит для разделения операторов PSQL, то чтобы парсер мог отделить оператор DSQL от оператора PSQL переключается разделитель команд, таким образом ISQL узнает где заканчивается команда EXECUTE BLOCK, CREATE PROCEDURE ...
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38888738
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисНет оператора SET TERM в Firebird.
Симонов Денис, а почему он упоминается в доке и на всех форумах?!


Симонов ДенисISQL на самом деле не выполняет несколько операторов за раз. Точка с запятой ";" там как раз и служит для того чтобы он мог разделить скрипт на отдельные операторы DSQL. Поскольку в PSQL точка запятой служит для разделения операторов PSQL, то чтобы парсер мог отделить оператор DSQL от оператора PSQL переключается разделитель команд, таким образом ISQL узнает где заканчивается команда EXECUTE BLOCK, CREATE PROCEDURE ...
Ужас! Это наследие Interbase? Через ж.... сделано. Не могли уже к единому виду привести?

GallemarУмники не получают удовлетворения от обучения нечитающих неофитов.
Это потому, что у умников гордыня зашкаливает - смертный грех между прочем, а если бы они хотели развиваться, то с удовольствием обучали бы других. Отдаёшь имеющиеся знания - приходят новые! А так кучу текста написали за зря, лишь бы не показать своего незнания.
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38888741
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey KGallemarУмники не получают удовлетворения от обучения нечитающих неофитов.
Это потому, что у умников гордыня зашкаливает - смертный грех между прочем, а если бы они хотели развиваться, то с удовольствием обучали бы других. Отдаёшь имеющиеся знания - приходят новые! А так кучу текста написали за зря, лишь бы не показать своего незнания.
Давай научу :) Пусть ко мне придут новые знания
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38888747
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey K,

ну как сделано. В MySQL там тоже переключатель разделителя есть. Да и в Оракл дополнительный разделитель требуется, хоть его и не переключают.

Ну или возьмём твой любимый PG

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE FUNCTION somefunc() RETURNS integer AS $$
DECLARE
    quantity integer := 30;
BEGIN
    RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 30
    quantity := 50;
    --
    -- Create a subblock
    --
    DECLARE
        quantity integer := 80;
    BEGIN
        RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 80
        RAISE NOTICE 'Outer quantity here is %', outerblock.quantity;  -- Prints 50
    END;

    RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 50

    RETURN quantity;
END;
$$ LANGUAGE plpgsql;



Какие то дурацкие доллары, ну не идиотизм ли
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38888810
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarДавай научу :) Пусть ко мне придут новые знания
Ты упустил эту возможность! :) Хотя кое какие знания и я дал :)


Симонов ДенисНу или возьмём твой любимый PG
Это когда функцию создаёшь и диалект указываешь, все из которых прекрасно задокументированы, а отдельные команды можно выполнять сколько угодно, знай разделяй их ";".
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38888814
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey K,

вот я напишу скрипт в ISQL. И тоже могу выполнить сколько угодно команд разделённых ";". Да и IBE в редакторе скриптов тоже могу выполнить сколько угодно. А вот когда свою прогу пишешь там надо позаботится о том чтобы команды разделялись на отдельные.
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38888902
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисИ тоже могу выполнить сколько угодно команд разделённых ";". Да и IBE в редакторе скриптов тоже могу выполнить сколько угодно.
Каким образом: как я через EXECUTE BLOCK AS BEGIN или ещё как?
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38888906
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey Kили ещё как?
Эти утилиты предназначены для исполнения скриптов. Сам сервер скрипты выполнять не может,
их для него предварительно парсят внешние утилиты. О чём тебе уже сказали раз или два.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38888911
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAleksey Kили ещё как?
Эти утилиты предназначены для исполнения скриптов. Сам сервер скрипты выполнять не может,
их для него предварительно парсят внешние утилиты. О чём тебе уже сказали раз или два.
Да хоть 10, это понятно: как заставить IBE парсить?! Только через EXECUTE BLOCK AS BEGIN - это единственный вариант?
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38888918
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey Kкак заставить IBE парсить?!
Заглянуть в прикреплённую тему или справку по IBExpert чтобы найти Tools->Script Execute?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создание auto-increment в IBExpert
    #38888922
Фотография Aleksey K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAleksey Kкак заставить IBE парсить?!
Заглянуть в прикреплённую тему или справку по IBExpert чтобы найти Tools->Script Execute?..
Блин, спасибо, это и искал.
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Создание auto-increment в IBExpert
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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