Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизТриггер счетчика Найти похожие ветки
← →
Донской (2004-09-02 17:16) [0]День добрый. чисто ламерский вопрос.
В Interbase expert создал первичный ключ в виде счетчика. И сама интербейз експерт предложила создать для него триггер и генератор. Я их создал, базу закрыл.
Когда коннектюсь к ней из дельфи с помощью TIBTable и пытаюсь добавить запись, то после команды post выдается ошибка, что ключевое поле не заполнено.
Разве триггер на стороне сервера не должен это делать сам?
← →
-SeM- (2004-09-02 17:24) [1]Попробуй убрать это ключевое поле с текста запроса. Делфи знает, что это поле обязательное, потому и ругается. ИМХО.
← →
Sergey13 © (2004-09-02 17:33) [2]2Донской (02.09.04 17:16)
1.Убедись что тригер есть и работает
2.Поставь для поля Required:=False
← →
Донской (2004-09-02 17:34) [3]Да нет у меня запроса...
у меня такой код:
with IBTable1 do
begin
for k:=1 to 1000 do
begin
append;
findfield("id_parent").asinteger:=1;
findfield("datecreation").value:=now;
findfield("selected").asinteger:=1;
findfield("numpi").asstring:=" ";
findfield("temperature").value:=0;
findfield("velosity").value:=0;
findfield("pressure").value:=0;
post;
end;
end;
так вот ключевым является поле ID, которое в этом коде не правится. Я думал, что это должен делать сервер inttrbase.
← →
Донской (2004-09-02 17:36) [4]Для поля Required:=False.... ща, пять сек, проверю...
← →
Донской (2004-09-02 17:38) [5]Точно. Именно false!
Спасибо, Sergey13
← →
Zacho © (2004-09-02 20:00) [6]2 Донской :
Немедленно и вдумчиво читать http://www.ibase.ru/devinfo/generator.htm и все отальные статьи на http://www.ibase.ru/develop.htm
← →
VID © (2004-09-03 00:21) [7]1. создать генератор для твоего поля ID.
2. создать триггер Before Insert для твоей таблицы где это поле.
3. в коде триггера сделать NEW."ID" = GEN_ID(<generator_name>, 1);
← →
Донской (2004-09-03 12:24) [8]Понятно, доки читаем обязательно.
А вот такой вопрос.
я создал sql запрос с созданием таблицы и внешнего ключа. В документации написано, что если при этом будет возникать ошибка Is in use, то базу надо открывать в монопольном режиме, а уже потом создавать связи между таблицами.
Так вот как программно открыть базу в монопольном режиме?
← →
Sergey13 © (2004-09-03 12:32) [9]2[8] Донской (03.09.04 12:24)
А почему бы не продолжить успешное использование ИБЭксперта в деле администрирования/проектирования БД? Зачем в программу то это тащить?
← →
Донской (2004-09-03 12:38) [10]Дело в том, что программа длительное время осциллографирует данные. Данные должны храниться в отдельной таблице, чтобы можно было использовать tdbchart для их отрисовки. Иначе будут глобальные тормоза не только при отрисовке, но и при добавлении данных (63 поля = 63 канала данных), тормоза проверены, этот вариант отпал.
Остается создание новой таблицы с осциллографируемыми данными для каждого сеанса измерений в режиме выполнения программы.
И связь этой таблицы с некоторыми другими таблицами из базы.
← →
Sergey13 © (2004-09-03 12:41) [11]2[10] Донской (03.09.04 12:38)
>Остается создание новой таблицы
Не думаю, что это поможет.
← →
Донской (2004-09-03 12:42) [12]а, кажется нашел.
надо заполнить поле parameters у компонента tibdatabase
← →
Донской (2004-09-03 12:42) [13]а, кажется нашел.
надо заполнить поле params у компонента tibdatabase
← →
Zacho © (2004-09-03 12:45) [14]Донской (03.09.04 12:24) [8]
Сделать ей shutdown ? В IBX можно с помощью TIBConfigService
← →
Донской (2004-09-03 12:46) [15]хотя нет, не помогло. Они уже были заполнены,
и даже если логинпромт поставить в труе, и при запросе пароля ввести sysdba то все равно выскакивает ошибка is in use.
Хотя база открыта локально на моей машине только мной.
← →
Zacho © (2004-09-03 12:48) [16]
>Донской (03.09.04 12:38) [10][Ответить]
> Дело в том, что программа длительное время
> осциллографирует данные. Данные должны храниться в
> отдельной таблице, чтобы можно было использовать
> tdbchart для их отрисовки. Иначе будут глобальные
> тормоза не только при отрисовке, но и при добавлении
> данных (63 поля = 63 канала данных), тормоза
> проверены, этот вариант отпал.
Не понимаю, с чего бы взялись тормоза. Что-то ты неправильно делал.
>Донской (03.09.04 12:42) [13][Ответить]
>а, кажется нашел.
> надо заполнить поле params у компонента tibdatabase
??? И какие параметры помогут подключиться к БД "монопольно" ?
← →
Донской (2004-09-03 12:48) [17]Zacho,
нет такого компонета, у меня в палитре, по крайней мере.
А что он позволяет делать?
← →
Zacho © (2004-09-03 12:50) [18]Донской (03.09.04 12:48) [17]
Поставь апдейт IBX. Или используй gfix.exe
← →
Sergey13 © (2004-09-03 12:52) [19]2[17] Донской (03.09.04 12:48)
>нет такого компонета, у меня в палитре, по крайней мере.
Пропатчи ИБХ. На ibase.ru можно скачать.
← →
Донской (2004-09-03 12:53) [20]Zacho,
да все вроде верно. Никаких наворотов. Просто таблица из 63 полей и к ней обращается tdbchart. Но после нескольких часов работы начинается подтормаживание при добавлении данных.
А представь такая лапша из данных в одной таблице для нескольких испытаний по несколько часов каждое, даже если она будет отфильтрована по текущему испытанию? Тормоза.
Вот поэтому я и хочу для каждого испытания создавать отдельную таблицу.
← →
Роман Снегирев (2004-09-03 12:54) [21]короче нужно поставить Required=false у ключевого поля, а вообще пора переходить на FibPlus
← →
Sergey13 © (2004-09-03 12:55) [22]2[20] Донской (03.09.04 12:53)
Это все лирика. Ты структуру приведи и методы работы опиши.
← →
Sergey13 © (2004-09-03 13:01) [23]2[20] Донской (03.09.04 12:53)
1.А зачем ты выполняешь код из [3]?
2.Зачем используешь TTable?
← →
Донской (2004-09-03 13:01) [24]Не, хорошо.
Я все понимаю. Но вот если абстрагироваться от конкретно моей задачи, и подумать в общем. Если есть sql запрос, который позволяет создавать внешний ключ, но при этом таблица должна быть открыта в монопольном доступе, то как это сделать???
Должен быть метод. Кто-нибудь знает?
← →
Донской (2004-09-03 13:03) [25]Sergey13,
1) я ttable не использую. у меня сейчас tibtable.
2) код для тестирования.
← →
Zacho © (2004-09-03 13:04) [26]Донской (03.09.04 13:01) [24]
Я же уже сказал. Зашатдаунить БД.
А вообще, не понимаю, как постоянное создание новой таблицы может помочь.
Все-таки что-то неправильно ты делал, если тормоза были.
← →
Sergey13 © (2004-09-03 13:04) [27]2[24] Донской (03.09.04 13:01)
>Но вот если абстрагироваться от конкретно моей задачи, и подумать в общем.
Тебе надо задачу решать или ты о вечном поболтать хочешь? 8-)
Если пасатижами неудобно гвозди забивать, то необязательно утяжелять пасатижи. Можно просто молоток взять.
← →
Донской (2004-09-03 13:35) [28]окей.
я про абстрагирование написал для того, чтобы ты не пытался выяснить зачем именно мне создавать ключ и не выносил суждения о приемлемости в данном конкретном случае, а предоставил этот вопрос решать мне. Я не спорю, что ты опытней меня, иначе я бы сюда не зашел. Меня только интересует вопрос - как открыть монопольный доступ к базе с тем чтобы получить доступ на добавление внешних ключей. Это сложно?
← →
Sergey13 © (2004-09-03 13:42) [29]2[28] Донской (03.09.04 13:35)
Да делай как хочешь. Я тебе вполне конкретно намекал, что твои методы работы не соответствуют задаче. Не хочешь - не надо.
Я советов типа "как мне легче повеситься" не даю.
← →
Донской (2004-09-03 13:44) [30]и на том спасибо.
← →
Донской (2004-09-03 13:46) [31]и на том спасибо.
Может я не понял намека из=за того, что не знаю определения слова зашатдаунить.
не просвятишь? мы наверное друг друга не поняли.
← →
Zacho © (2004-09-03 13:47) [32]
> Донской (03.09.04 13:35) [28]
И ещё раз: shutdown
Правда, SYSDBA это не отключит, ну и нефиг подключаться нескольким SYSDBA одновременно.
P.S. И всё-таки ты решаешь задачу совершенно неподходящим способом. Лучше разберись, почему у тебя тормоза были.
← →
Zacho © (2004-09-03 13:49) [33]Или поставь апдейт IBX и используй TIBConfigService.ShutdownDatabase, или используй gfix.exe Описание работы с gfix можно найти в Operations Guide
← →
Донской (2004-09-03 13:52) [34]Хорошо.
апдейт поищу, спасибо что разъяснил, Zacho.
Sergey13, прости если разозлил.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.048 c