To pytanie już było w BAZY DANYCH, ale nikt nie udzielił mi odpowiedzi(a kluczowym aspektem jest tutaj Delphi)

Cześć, tworzę sobie bazę Firebird z Delphi za pomocą komponentu TIBScript. Skrypt mam eksportowany z IBExperta do pliku(a więc jest dobry). Następnie dzielę sobie skrypt jakby na 2 części(create database i reszta).

Wszystko działało i ładnie śmigało do pewnego momentu.
Gdy zaopatrzyłem bazę w klucze obce i wyeksportowałem skrypt, podczas jego uruchamiania z Delphi dostaję taki komunikat błędu:

Lock conflict on no wait transaction
unsuccessful metadata update
object SALONY is in use

Kawałki skryptu, co mają jakikolwiek związek z tabelą SALONY przedstawiam poniżej:

/* tworzenie bazy */

/* tworzenie kilku generatorów */
CREATE GENERATOR GEN_SALONY_ID;
SET GENERATOR GEN_SALONY_ID TO 1;

/* tworzenie innych generatorów */
/* procedury składowane i jakieś tabele */
CREATE TABLE SALONY (
    ID                BIGINT NOT NULL,
);

/* reszta tabel(w salonach są oczywiście inne pola w większości "teleadresowe") */
/* klucze główne */
ALTER TABLE SALONY ADD CONSTRAINT PK_SALONY PRIMARY KEY (ID);
/* inne klucze główne */

ALTER TABLE DOKMAG ADD CONSTRAINT FK_DOKMAG_1 FOREIGN KEY (ID_SALONU) REFERENCES SALONY (ID) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE DOKMAG ADD CONSTRAINT FK_DOKMAG_3 FOREIGN KEY (ID_SALONU_T) REFERENCES SALONY (ID) ON DELETE SET NULL ON UPDATE CASCADE;

/* inne klucze obce, procedury i triggery */

Czemu jest tak?
Gdy ten sam skrypt zapuszczę w IBExpert, to śmiga bez problemu.