Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> анализ запросов UIB SQL MONITOR 
:(
    Опции темы
SergXP
Дата 10.12.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 16.4.2008

Репутация: нет
Всего: нет



Всем добрый день. 

Есть программка, которая коннектится и работает со своей БД.
Пишу программку, которая коннектится к этой же базе и умеет добавлять, редактировать и удалять данные.
Проблема в том, что мне неизвестны индексы таблиц, и при добавлении в одну из таблиц получаю:
Код

violation of PRIMARY or UNIQUE KEY constraint "PK_DBTABLE_CATEGORY" on table "DBTABLE_CATEGORY"


код запроса:
Код

IBQuery1.SQL.Clear;
      IBQuery1.SQL.Add('INSERT INTO DBTABLE_CATEGORY VALUES (:id,:cat,:n);');
      IBQuery1.ParamByName('id').AsInteger :=18;
      IBQuery1.ParamByName('cat').asString:='test2';
      IBQuery1.ParamByName('n').AsBoolean :=false;
      IBQuery1.ExecSQL;


С помощью софтины UIB SQL Monitor. Попытался поймать запросы оригинальной программы:
Код

/* SQL */
INSERT INTO DBTABLE_CATEGORY (ID,CATNAME,SUBID) VALUES (?  ,?       ,?     )

/* PLAN */

/* EXECUTE PARAMETERS */
PARAM_0 = NULL
PARAM_1 = NULL
PARAM_2 = NULL



не знаю почему нулл все данные, на самом деле все добавляется в БД.
Затем идет запрос:
Код

SELECT <тут все нужные поля> FROM  DBTABLE left join DBTABLE_CATEGORY on DBTABLE.IDCATEGORY=DBTABLE_CATEGORY.ID where (idcategory=1000)

/* PLAN */
PLAN JOIN (DBTABLE INDEX (FK_DBTABLE_2), DBTABLE_CATEGORY INDEX (PK_DBTABLE_CATEGORY)) // думаю что этот запрос нужно выполнить мне, но он не срабатывает вылетает ошибка



Не могу понять, как выполнить запрос PLAN?


--------------------
База IMEI-номеров украденных и утерянных мобильных телефоновhttp://imeis.net.ru/
PM MAIL WWW ICQ   Вверх
Akella
Дата 10.12.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(SergXP @  10.12.2009,  15:20 Найти цитируемый пост)
умеет добавлять, 

Ты каким образом добавляешь? Нужно посмотреть триггеры и понять, как заносятся данные в первичный ключ.
PM MAIL   Вверх
Akella
Дата 10.12.2009, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(SergXP @  10.12.2009,  15:20 Найти цитируемый пост)
Не могу понять, как выполнить запрос PLAN?

PLAN - это не запрос. Это план запроса.

Добавлено через 2 минуты и 33 секунды
Цитата(SergXP @  10.12.2009,  15:20 Найти цитируемый пост)
PLAN JOIN (DBTABLE INDEX (FK_DBTABLE_2), DBTABLE_CATEGORY INDEX (PK_DBTABLE_CATEGORY)) // думаю что этот запрос нужно выполнить мне,

Зачем?
PM MAIL   Вверх
SergXP
Дата 10.12.2009, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 16.4.2008

Репутация: нет
Всего: нет



в общем назову так есть: "оригинальная" программа и "самописная(моя)" программа
извиняюсь, не указал. Структура базы мне не известна, единственное что я могу, расшарить ее с помощью программы: xBaseView

вот так я сам пытаюсь добавить запись(самописная)
Код
:
IBQuery1.SQL.Clear;
      IBQuery1.SQL.Add('INSERT INTO DBTABLE_CATEGORY VALUES (:id,:cat,:n);');
      IBQuery1.ParamByName('id').AsInteger :=18;
      IBQuery1.ParamByName('cat').asString:='test2';
      IBQuery1.ParamByName('n').AsBoolean :=false;
      IBQuery1.ExecSQL;


и получаю ошибку
violation of PRIMARY or UNIQUE KEY constraint "PK_DBTABLE_CATEGORY" on table "DBTABLE_CATEGORY"
но при этом, запись в БД происходит!

Цитата

Зачем? 

Не знай, думаю в нем дело  smile  монитор "оригинальной" показывает, что после запроса INSERT выполняется PLAN.
Может он, что-то врет  smile  

--------------------
База IMEI-номеров украденных и утерянных мобильных телефоновhttp://imeis.net.ru/
PM MAIL WWW ICQ   Вверх
SergXP
Дата 10.12.2009, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 16.4.2008

Репутация: нет
Всего: нет



итак, вроде бы заработало... счас точнее проверю:
Код

IBQuery1.SQL.Clear;
      IBQuery1.SQL.Add('INSERT INTO DBTABLE_CATEGORY VALUES (:id,:cat,:n);');
      IBQuery1.ParamByName('id').IsNull;                    // тут NULL должен быть))) 
      IBQuery1.ParamByName('cat').asString:='test2';
      IBQuery1.ParamByName('n').AsBoolean :=false;
      IBQuery1.ExecSQL;

--------------------
База IMEI-номеров украденных и утерянных мобильных телефоновhttp://imeis.net.ru/
PM MAIL WWW ICQ   Вверх
Akella
Дата 11.12.2009, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(SergXP @  10.12.2009,  18:04 Найти цитируемый пост)
IBQuery1.SQL.Add('INSERT INTO DBTABLE_CATEGORY VALUES (:id,:cat,:n);');
      IBQuery1.ParamByName('id').AsInteger :=18;


Цитата(SergXP @  10.12.2009,  18:04 Найти цитируемый пост)
и получаю ошибку
violation of PRIMARY or UNIQUE KEY constraint "PK_DBTABLE_CATEGORY" on table "DBTABLE_CATEGORY"


тебе ясно дают понять, что значение 18 уже есть в таблице

Добавлено через 39 секунд
Я тебе сказал про триггеры не просто так ведь?

Это сообщение отредактировал(а) Akella - 11.12.2009, 10:01
PM MAIL   Вверх
SergXP
Дата 11.12.2009, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 16.4.2008

Репутация: нет
Всего: нет



Akella, не просто так)) БД нарушена и замусорена... потом подчищу)) спасибо! 
--------------------
База IMEI-номеров украденных и утерянных мобильных телефоновhttp://imeis.net.ru/
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0764 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.