![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание таблиц в 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);