Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 870

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Помогите решить проблемку с созданием и удалением временной таблицы в БД. Делаю так:
При запуске программы пишу:
s:= 'CREATE TABLE temp' +
'( ' +
' CustNo AUTOINCREMENT NOT NULL, ' +
' Company CHAR(40), ' +
' State CHAR(2), ' +
' PRIMARY KEY (CustNo) ' +
')';
ADOConnection1.Execute(s);

По завершению программы удаляю таблицу так:
s:= 'DROP TABLE temp';
ADOConnection1.Execute(s);

Все это работает хорошо, но..... при некорректном завершении программы временная таблица остается в базе, и соответсвенно при повторном ее запуске выдает ошибку что такая таблица уже существует.
Пробовал делать так:
s:= 'CREATE TABLE IF NOT EXISTS temp' +
'( ' +
' CustNo AUTOINCREMENT NOT NULL, ' +
' Company CHAR(40), ' +
' State CHAR(2), ' +
' PRIMARY KEY (CustNo) ' +
')';
ADOConnection1.Execute(s);

Но вот именно строчка IF NOT EXISTS выдает ошибку синтаксиса. Как это можно средствами языка DDL сделать?

Терехин Саша Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Терехин Саша (статус: Посетитель)
Вопрос отправлен: 31 мая 2009, 15:51
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 6; последнее сообщение — 2 июня 2009, 21:16; участников в обсуждении: 3.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 31 мая 2009, 17:15 [#1]:

Какую СУБД используете?
Терехин Саша

Терехин Саша (статус: Посетитель), 31 мая 2009, 19:54 [#2]:

Использую обычную базу данных Microsoft Access (Provider=Microsoft.Jet.OLEDB.4.0;)
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 31 мая 2009, 20:26 [#3]:

как вариант можно сделать следующим образом:
в конструкцию try execept помещаете запрос к таблице temp - если запрос выполняется без ошибки - значит таблица существует, если при выполнении возникает ошибка, то - нет. Можно в try except поместить само создание таблицы temp, но тогда надо гарантировать правильность запроса на создание таблицы.
Терехин Саша

Терехин Саша (статус: Посетитель), 31 мая 2009, 22:40 [#4]:

Хорошо, попробую.
Косолапов Дмитрий Юрьевич

Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 1 июня 2009, 10:18 [#5]:

IF NOT EXISTS это, кажется, "фишка" MySQL, но не Access.
Терехин Саша

Терехин Саша (статус: Посетитель), 2 июня 2009, 21:16 [#6]:

Все-таки решил проблему по другому, а именно - получил список всех таблиц активной базы и сделал проверку на наличие временной таблицы, и все.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:26
Выполнено за 0.02 сек.