Russian Qt Forum
Ноябрь 24, 2024, 17:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: If not exists аналог в Firebird  (Прочитано 9175 раз)
Astrologer
Гость
« : Октябрь 04, 2010, 18:59 »

Привет. Когда я использовал Sqlite мне нужно было создать таблицу, если ее нет или продолжить при наличии.
Писал:
Код:
CREATE TABLE IF NOT EXISTS table1(...)

Как так же сделать в Firebird? Желательно без хранимок.

http://www.firebirdfaq.org/faq69/

Эта штука не работает.
Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #1 : Октябрь 04, 2010, 19:48 »

Код:
CREATE TABLE IF NOT EXISTS
- это afaik не поддерживается

Через ХП должно быть можно (читать из системной т-цы).

Штука из фака затыкается где? rdb$relations вообще читается?

Записан
Astrologer
Гость
« Ответ #2 : Октябрь 04, 2010, 20:03 »

text
Код:
"Dynamic SQL Error - SQL error code = -104 - Token unknown - line 1, column 173 - ! Could not prepare statement"
Код:
QString query4;
    query4 = "EXECUTE BLOCK AS BEGIN ";
    query4+= "if (not exists(select 1 from rdb$relations where rdb$relation_name = 'EMPLOYEE')) then ";
    query4+= "execute statement 'create table employee ( id integer );'; ";
    query4+= "END!!";
    statement.exec(query4);
    if (statement.lastError().isValid())
{
    QString text = statement.lastError().text();
    QMessageBox::critical(this, tr("Error"), text);
}
Записан
crossly
Гость
« Ответ #3 : Октябрь 04, 2010, 20:08 »

грустно когда люди не понимают что делают... Грустный... прежде чем начать работу с СУБД.... нужно хоть немного с ней ознакомится... по теме... убрать !! после END... зачем?? ... это вам домашнее задание...
Записан
Astrologer
Гость
« Ответ #4 : Октябрь 04, 2010, 20:14 »

Да я новичок просто! Только начал изучать )) Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 23.