Insert kopiujący rekord w ZQuery

0

Cześć
Przestawiam się z MS SQL SERVER na Firebird i mam problemy już na samym początku.
Korzystam z Delphi 2009, komponenty ZEOS w wersji 7.1.4 i Firebird 2.5.

Mianowicie:
Chcę w ZQuery zrobić inserta kopiującego rekord:

    insert into TABELA (kol1, kol2)
      select kol1, kol2 from TABELA 
        where id=5

Z poziomu SQL Manager wszystko śmiga, z poziomu Delphi niestety nie... Błąd się nie wywala, ale rekord się nie dodaje.
Może czegoś nie ustawiam w ZQuery?

dodanie znacznika <code class="sql"> - @furious programming

0

nie widzę powodu aby nie zadziałało , prawdopodobnie warunek w klauzuli "where id=5" powoduje że nic się nie zapisuje

0

Gdy usuwam warunek program się zapętla i powoduje, że dodanie kolejnego rekordu z poziomu Managera generuje się jakiś kosmiczny numer ID (ID generuję/ autoinkrementuję - przykładem poniżej).

CREATE GENERATOR GEN_TABELA_ID;
SET GENERATOR GEN_TABELA_ID TO 0;
SET term ^;

CREATE TRIGGER TABELA_bi FOR TABELA
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.TABELA_ID IS NULL) THEN
    NEW.TABELA_ID = GEN_ID(GEN_TABELA_ID,1);
END
^
SET term ;^

Próbowałem naprawdę różnych tych warunków where. W managerze wszystko działa a w delphi nie (poza insert... values).
Mi to wygląda, że gubi się zapytanie gdy próbuje się do tabeli zrobić inserta z selecta z tej samej tabeli.

Ma ktoś jakiś pomysł? Bo ja cały dzień zmarnowałem nad taką głupotą co powinna działać bezproblemowo.

dodanie znacznika <code class="sql"> - @furious programming

0

U mnie działa bez problemu. Z tym że ja używam ZEOS 7.2 r3636.
AutoCommit ustawione na True?

0

tak, autocommit na true

0

To zobacz aktualna wersje 7.2(właściwie jest już ukończona):
http://svn.code.sf.net/p/zeoslib/code-0/branches/testing-7.2/
http://zeoslib.sourceforge.net/viewtopic.php?f=40&t=3795&p=44589#p44589
były w niej i poprawki do FB.
Jak rozumiem robisz ExecSQL?

0

tak, oczywiście ExecSQL

Wszystko działa, mój błąd.

Robiłem inserty w programie SQL Manager for Interbase, po wykonaniu selecta wszystkie rekordy były widoczne, niestety nie wiedziałem że trzeba zrobić jeszcze w tym Managerze Commit transaction inaczej dane są wirtualne a nie zapisane do tabeli.
Dlatego Delphi nie widziało rekordów w tabeli, bo ich fizycznie tam nie było.

Przepraszam za zawracanie głowy, ale może komuś to kiedyś pomoże jak też będzie taką gapą jak ja.

1 użytkowników online, w tym zalogowanych: 0, gości: 1