Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание таблиц в InterBase [D6, IB6.x]


Guerrillero ©   (2003-10-19 23:44:00) 

Создание таблиц в InterBase
Здраствуйте ! Есть SQL запрос создания таблицы: "CREATE TABLE %S (GKEY INTEGER NOT NULL, GName SMALLINT, GFoot VARCHAR(40))"
Если я выполняю его в IBExpert, то таблица создается. При создании же во время выполнения программы выскакивает ошибка:

Project Makkk.exe raised exception class EIBInterBaseError with message "unsuccessful metadata update
STORE RDB$FIELDS failed
lock conflict on no wait transaction". Process stopped. Use Step or Run to continue.

В чем моя ошибка ?


kaif   (2003-10-20 13:26:00) [1]

Создание метаданных должно делаться в отдельнойтранзакции, которую затем желательно сразу подтверждать. смешивать работу с данными и метаданными в пределах одной транзакции, как правило, не следует.


Johnmen   (2003-10-20 11:35:00) [2]

Убери старт тр-ии и коммит...


Guerrillero   (2003-10-20 10:37:00) [3]

UP


Guerrillero   (2003-10-19 23:45:00) [4]

Продолжение.
Код создания такой:

const
SText = "CREATE TABLE %S (GKEY INTEGER NOT NULL, GName SMALLINT, GFoot VARCHAR(40))"

procedure TfrmGung_Ntan.CreateTable(const ATableName,
SQLText: string);
var
NewTable: string;
begin
qCopyTables.Close;
if not tranCopyTables.InTransaction then
tranCopyTables.StartTransaction;
NewTable := ATableName + "2000"
qCopyTables.SQL.Text := Format(SQLText,[NewTable]);
qCopyTables.ExecSQL;
tranCopyTables.Commit;
end;

Вызов CreateTable("NTuk",SText);


Наверх

Титульная страница Поиск, карта сайта Написать письмо