Russian Qt Forum

Qt => Базы данных => Тема начата: Astrologer от Октябрь 04, 2010, 18:59



Название: If not exists аналог в Firebird
Отправлено: Astrologer от Октябрь 04, 2010, 18:59
Привет. Когда я использовал Sqlite мне нужно было создать таблицу, если ее нет или продолжить при наличии.
Писал:
Код:
CREATE TABLE IF NOT EXISTS table1(...)

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

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

Эта штука не работает.


Название: Re: If not exists аналог в Firebird
Отправлено: vipet от Октябрь 04, 2010, 19:48
Код:
CREATE TABLE IF NOT EXISTS
- это afaik не поддерживается

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

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



Название: Re: If not exists аналог в Firebird
Отправлено: Astrologer от Октябрь 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);
}


Название: Re: If not exists аналог в Firebird
Отправлено: crossly от Октябрь 04, 2010, 20:08
грустно когда люди не понимают что делают... :(... прежде чем начать работу с СУБД.... нужно хоть немного с ней ознакомится... по теме... убрать !! после END... зачем?? ... это вам домашнее задание...


Название: Re: If not exists аналог в Firebird
Отправлено: Astrologer от Октябрь 04, 2010, 20:14
Да я новичок просто! Только начал изучать )) Спасибо!