Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Открыть новую тему     Написать ответ в эту тему

delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Новая тема если, тут кто-то бывает. - Составной примари кей. Сам по себе имеет право на существование. Для его существования в базе создаётся индекс, используемый для соблюдения уникальности (создаётся - слово не известное в браузере хром). После этого девелопер пишет только одну процедуру испльзующую этот индекс. Остальные 100 процедур не используют индекс. А когда нужно реплицировать - примари кей приходится удалить. Смешение понятий в мозгу учёных оказалость ловушкой, начитавшис про архитектуру баз данных - разработчик думает что он прав когда для локейтов делает состваное поле, а то что программа его никогда не научится таким локейтам его никто не предупреждал. Лес гуще - дровосеки лучше.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 23:52 24-07-2012 | Исправлено: delover, 07:39 25-07-2012
exteris

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Новая тема если, тут кто-то бывает

И скоро совсем не будет. Я лично слабо понял мысли, которые Вы хотели донести последними постами. Что-то на границе флуда и информационного шума, извиняюсь.
 

Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 06:58 25-07-2012 | Исправлено: exteris, 06:58 25-07-2012
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
exteris
Я просил сегодня большего чем я специалиста, привести мне пример когда нужен составной PRIMARY KEY из трёх полей? Он ответил:
> Например номер карты, серия, магнитный код.
Я тогда снова спросил - а что это даёт? Он ответил:
> Уникальность связки.
Тогда я пояснил - есть в IBExpert вкладка - ограничения - уникальные. Там это всё можно легко сделать. Вопрос для чего нужен именно составной PRIMARY KEY из трёх полей? И при этом необходимо исключить стандартный вместе с генератором? Он ответил:
> Не знаю.
 
Я тоже не знаю. Если кто знает отпишите пожалуйста. Просто удалось выбить время на профилактические работы (планирую шаблонные изменения).

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 07:48 25-07-2012
eddoc



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Комрады, подскажите.
 
Можно ли с клиента посредством компонентов доступа (FIB+ 7.1, FB 2.1.4 18393, диалект 3, SS(многопольз.)) дропнуть индекс в таблице, предварительно проверив его существование?

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 09:39 25-07-2012 | Исправлено: eddoc, 09:43 25-07-2012
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Можно ли с клиента посредством компонентов доступа (FIB+ 6.9.9) дропнуть индекс в таблице

Можно

Цитата:
предварительно проверив его существование?

см. в RDB$INDICES

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 09:44 25-07-2012
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да, можно, там есть компонента для выполнения скриптов, или можно обычную кверю взять

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 10:09 25-07-2012
eddoc



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
OXDBA
 
Ога, спасибо за наводку. В дельфях получилось примерно так
 

Код:
with TmpDSet_Dest do
  begin
    if Active then Close;
 
    SelectSQL.Text:= 'SELECT RDB$INDEX_NAME what_index ' +
                     'FROM RDB$INDICES ' +
                     'WHERE RDB$INDEX_INACTIVE = 0 AND RDB$INDEX_NAME = ''UNQ_DATE_TBL_VISITMAIN''';
    Prepare;
    Open;
 
    if not IsEmpty then
      begin
        TmpQry.SQL.Text:= 'DROP INDEX UNQ_DATE_TBL_VISITMAIN';
        TmpQry.ExecQuery;
      end;
  end;

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 11:36 25-07-2012
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
если обычная кверя, то нужно отключать ParamsCheck

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 11:49 25-07-2012
eddoc



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
создаю в рантайме

Код:
    with TmpQry do
      begin
        Database:= FIB_DB_Dest;
        GoToFirstRecordOnExecute:= False;
        Options:= [qoStartTransaction,qoAutoCommit];
        ParamCheck:= False;
        Transaction:= TransWriteQryDest;
      end;

остальные параметры дефолтовые

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 11:59 25-07-2012 | Исправлено: eddoc, 12:00 25-07-2012
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
eddoc
Так не проще?

Код:
 
execute block(AIndexName varchar(31) =:AIndexName)
as
  declare variable lIndexName varchar(31);
begin
  select i.rdb$index_name
    from rdb$indices i
  where i.rdb$index_name = upper(:AIndexName)
  into :lIndexName;
  if (lIndexName is not null) then
    execute statement 'drop index '||lIndexName;
end  

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 12:23 25-07-2012
exteris

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Так не проще?

Те же яйца, вид со стороны базы  
Мож человеку на клиенте надо.

Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 14:42 25-07-2012
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пипл! Подскажите, почему не работает такая конструкция:

Код:
SELECT * FROM CLIENT_CATALOG WHERE upper(CLIENT_CATALOG.ITEM_NAME) containing 'СТРОЙ' ORDER BY CLIENT_CATALOG.ITEM_DATA

Вот так работает:

Код:
SELECT * FROM CLIENT_CATALOG WHERE CLIENT_CATALOG.ITEM_NAME containing 'Строй' ORDER BY CLIENT_CATALOG.ITEM_DATA

Всё это безобразие пытаюсь организовать в FlameRobin, FireBird 2.5, WinXP SP3.

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 16:23 25-07-2012
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777
предикат containing  независим от регистра.

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 17:08 25-07-2012
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OXDBA
Цитата:
предикат containing  независим от регистра.

Тогда почему 'Строй' отрабатывает, а 'СТРОЙ' не выдаёт ничего?

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 18:30 25-07-2012
eddoc



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
exteris

Цитата:
Мож человеку на клиенте надо.

Абсолютно верно. Приходится смотреть на мир глазами юзверя.
 
OXDBA
Спасибо. В копилку знаний
 
Добавлено:
Maximus777

Цитата:
Тогда почему 'Строй' отрабатывает, а 'СТРОЙ' не выдаёт ничего?
 

Чаще всего, если буквы в искомом слове набраны из разной раскладки клавы. Проверьте.

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 19:20 25-07-2012 | Исправлено: eddoc, 19:23 25-07-2012
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 Просто удалось выбить время на профилактические работы

На сервере кто-то менял дату, только дату. После этого поехали логи. Есть стандартные способы приводить логи в порядок? Мне приходит на ум только вычислить изменение и сделать апдейт, но как организовать вычисление такого момента в логах? Логи не полные.
 
Планирую востановить инфу в логах - в бэкапах она есть.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 20:46 25-07-2012 | Исправлено: delover, 20:49 25-07-2012
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
eddoc
Цитата:
Чаще всего, если буквы в искомом слове набраны из разной раскладки клавы. Проверьте.

Смотрите сами. Без переключения раскладки - скринкаст. Хотя это уже Линукс, но FB же одинаково должен работать?

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 21:26 25-07-2012 | Исправлено: Maximus777, 21:28 25-07-2012
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777, что-то с кодовыми таблицами. Ему (ФБ), да и мне тоже, 'Й' не нравится. А попробуй-ка поиск по другим буквосочетаниям. База-то большая должно быть.

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 22:29 25-07-2012 | Исправлено: AlexCoRu, 22:30 25-07-2012
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu
Неа, если убираю вообще из запроса "Й", т.е. оставляю 'СТРО', не выводит. А 'Стро' выводит. Всё-таки есть там регистрозависимость. Но вот как её обойти?
 
Опс! Вроде нашёл причину. У этого поля не задан Charset. Но в свойствах данный параметр недоступен. Как это можно исправить?

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 22:57 25-07-2012 | Исправлено: Maximus777, 23:05 25-07-2012
SevereK20

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777
uppercase

Всего записей: 7699 | Зарегистр. 07-05-2010 | Отправлено: 23:06 25-07-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru