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.