Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

FireBird...   Найти похожие ветки 

 
Knight ©   (2004-09-17 14:36) [0]

У кого есть список типов данных? Ищу-ищу, а оно никак не находится...


 
jack128 ©   (2004-09-17 14:40) [1]

Knight ©   (17.09.04 14:36)
плохо ищешь. Не ужто в LANGREF.PDF нету??


 
Knight ©   (2004-09-17 14:43) [2]


> jack128 ©   (17.09.04 14:40) [1]
> Knight ©   (17.09.04 14:36)
> плохо ищешь. Не ужто в LANGREF.PDF нету??

У меня такого нет... щас поищу...


 
1008 ©   (2004-09-17 14:43) [3]

http://www.ibase.ru/


 
Knight ©   (2004-09-17 14:49) [4]


> jack128 ©   (17.09.04 14:40) [1]

Спасибо за имя файла...


> 1008 ©   (17.09.04 14:43) [3]
> http://www.ibase.ru/

Там и нашёл, Был и до этого, но видать как-то пролиснул не аккуратно... диалап, смотреть очень подробно времени нет... :)

http://www.ibase.ru/ib6.htm


 
Knight ©   (2004-09-17 19:08) [5]

Поясните, кому не сложно, как выбирается значение параметра PAGE_SIZE при создании базы.


 
jack128 ©   (2004-09-17 19:15) [6]

Knight ©   (17.09.04 19:08) [5]
Как бог на душу положит ;-)  Обычно ставят 4к

Для начала достаточно знать, что Ib читает с диска именно страницами. То есть даже если нужно прочитать только один байт - все равно читается PAGE_SIZE байт. И если нужэно увеличеть размер базы на 1 байт, тот реально увеличение идет на PAGE_SIZE.


 
wisekaa ©   (2004-09-17 19:20) [7]

http://www.ibase.ru/devinfo/0116.htm
http://www.ibase.ru/devinfo/tablesize.htm
http://www.ibase.ru/devinfo/0113.htm


 
Knight ©   (2004-09-17 19:36) [8]

Спасибо...

IB дает 4-х варианта выбора -
1024 - сликом маленький
2048 - не такой большой
4096 - то что надо
8192 - никогда не видела чтобы работало лучше чем 4096.

Для NTFS (Windows NT) лучше всего отформатировать раздел с размером кластера 4К для размещения баз данных. Соответственно, у всех баз данных, помещаемых в таком разделе, лучше выбрать размер страницы 4К. Размер страниц 1К, 2К и 8К будет приводить к лишним чтениям с диска (1К, 2К) или лишней записи (8К).


Получается - 4096


 
Knight ©   (2004-09-17 23:20) [9]

Прочитал, что для русского текста нужно прописывать

- или параметром DEFAULT CHARACTER SET WIN1251 при создани базы
- или у текстового поля CHARACTER SET WIN1251 при создании таблицы

, но у меня почему-то в любом случае при создании таблицы начинает выскакивать ошибка "unsuccessful metadata update" + имя таблицы, что тут не так?


 
jack128 ©   (2004-09-17 23:22) [10]

а как ты базу/таблицы создаешь?? Скачай IBExpert и не мучайся.. Он free для ex ussr


 
Knight ©   (2004-09-17 23:39) [11]


IBDatabase.DatabaseName:=Stockman.DBPath+Name+"\Base.fdb";
IBDatabase.Params.Clear;
IBDatabase.Params.Append("USER "SYSDBA"");
IBDatabase.Params.Append("PASSWORD "MASTERKEY"");
IBDatabase.Params.Append("PAGE_SIZE 4096");
// IBDatabase.Params.Append("DEFAULT CHARACTER SET WIN1251");
IBDatabase.CreateDatabase;


Вроде нормально создаётся...


 
jack128 ©   (2004-09-18 00:21) [12]

Knight ©   (17.09.04 23:39) [11]
кавычки для логина и пароля должны быть одинарными. и пароль - "masterkey"


 
jack128 ©   (2004-09-18 00:23) [13]

все таки советую обратить внимание на Ibexpert. ответ на твой вопрос я получил, анализируя скрипт этой программки. И вообще удобная вещь..


 
Knight ©   (2004-09-18 09:59) [14]


> jack128 ©   (18.09.04 00:23) [13]

А что ответил? Про кавычки и пароль? Так кавычки и так одинаковые и с паролем с этим всё работает... только вот таблицы в базе с поддержкой русского не создаются. Если текстовое поле убрать или заменить тип, например, на INTEGER, то и таблицы создаются... почитал тут док на работе, который забыл вчера домой забрать, там пишется, что проблема возможна из-за:

Проблемы с созданием БД с кодировкой WIN1251 могут быть если у Вас бета-версия Delphi. Еще одна причина - пробелы в имени каталога, в котором
находятся файлы локального IB (Program Files\Borland\Delphi X.0\IntrBase), или база данных (gdb-файл).


Но пути без пробелов и база fdb... Попробую ещё вечером установить 6-ую или 7-ую может и правда с Delphi проблема, хотя вроде не бета, но с другой стороны от пиратов можно всего ожидать :)


 
Knight ©   (2004-09-18 22:50) [15]

Поставил шестой... проблема с кодовой страницей пропала... а мне так нравился пятый, но пусть будет шестой, по крайней мере его ещё не успели так покромсать, в отличии от седьмого.


 
Knight ©   (2004-09-20 22:58) [16]

Еще вопрос... надеюсь последний :)
Как реализовать автоинкрементное поле?


 
jack128 ©   (2004-09-20 23:02) [17]

Knight ©   (20.09.04 22:58) [16]
ключевое слово "генераторы"


 
Zacho ©   (2004-09-20 23:08) [18]

2 Knight © :
Ответы на все твои вопросы есть на http://www.ibase.ru/develop.htm

Например, http://www.ibase.ru/devinfo/ibrusfaq.htm
http://www.ibase.ru/devinfo/generator.htm

И т.д. и т.п. ..


 
Knight ©   (2004-09-20 23:58) [19]

>> [18] Zacho ©   (20.09.04 23:08)
спасибо, это я читал... да вот на практике, что-то не получается :(


> [17] jack128 ©   (20.09.04 23:02)
> ключевое слово "генераторы"

То что тут надо генераторы и триггеры, это я понял, но пробую-пробую, а оно никак не работает... :(
Одно слово - Paradox, привык к типу AUTOINC :)

Создаю генератор для хранения последнего номера:

CREATE GENERATOR get_ref_id;

Создаю триггер для обработки события вставки новой записи:

CREATE TRIGGER set_new_ref_id FOR t_ref
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
 NEW.REF_ID = GEN_ID(get_ref_id, 1);
END


А когда делаю вставку, он работает с тем значение, которое укажу...

INSERT INTO t_ref VALUES ([значение для REF_ID],...);

если указанное число уникально, то вставляет число,
иначе - выдаёт ошибку.

Хотя в статье http://www.ibase.ru/devinfo/generator.htm
написано "Поскольку триггер меняет значение первичного ключа вставляемой записи,..." Почему он у меня ничего не меняет?


 
DrPass ©   (2004-09-21 00:19) [20]


> А когда делаю вставку, он работает с тем значение, которое
> укажу...

А ты не указывай - для чего тебе триггер дан? Или если хочешь сам контролировать значение, убери триггер, и вместо него ручками выбирай значение из генератора (вроде select gen_id(..., 1) from rdb$database), и подставляй


 
Knight ©   (2004-09-21 00:52) [21]

Так не реагирует он... если делаю

insert into t_ref (ref_name,ref_desc) values ("name4","Пояснение");

Ругается, что не может присвоить REF_ID значение NULL...


 
Knight ©   (2004-09-21 01:27) [22]


> DrPass ©   (21.09.04 00:19)

Хотелось бы с триггерами разобраться... весчь-то полезная :)


 
P.N.P. ©   (2004-09-21 02:47) [23]

>Knight ©   (21.09.04 01:27) [22]
А что с ними разбираться?
http://ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_intro_sp_trig
(правда на аглицком, но думаю будет понятно.)


 
Knight ©   (2004-09-21 08:49) [24]

Так я вроде понял, но не срабатывает... :(
Ладно почитаю ещё это, вечером попробую... Спасибо :)


 
wisekaa ©   (2004-09-21 10:17) [25]

Генератор:
CREATE GENERATOR NACHISL_GEN;
Таблица:
CREATE TABLE NACHISL (
   ID             INTEGER NOT NULL,
   TYPE_        INTEGER DEFAULT 0 NOT NULL,
   NAME         VARCHAR(150) NOT NULL);

ALTER TABLE NACHISL ADD CONSTRAINT PK_NACHISL PRIMARY KEY (ID);
CREATE INDEX IDX_NACHISL_NAME ON NACHISL (NAME);
Тригер
CREATE TRIGGER INCNACHISL FOR NACHISL
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
 IF (NEW.n_id IS NULL) THEN NEW.n_id = GEN_ID(NACHISL_GEN, 1);
END;
Вставка в таблицу:
INSERT INTO nachisl (type_, name) VALUES (1, "Оклад");

Все работает.


 
Romkin ©   (2004-09-21 10:28) [26]

Угу. Именно
IF (NEW.n_id IS NULL) THEN NEW.n_id = GEN_ID(NACHISL_GEN, 1);
мне больше всего нравится. То есть, если значение есть - принимаем его, если не задано - генерируем. Это удобно.


 
Romkin ©   (2004-09-21 11:01) [27]

А, да, забыл сказать, почему удобно :)
Дело в том, что я привык получать новый ID сразу, в обработчике OnNewRecord, делая запрос select GEN_ID(NACHISL_GEN, 1) from rdb$database. И тогда триггер не будет ничего менять, и первичный ключ сразу известен, это удобно при связке мастер-деталь :)


 
Knight ©   (2004-09-21 12:19) [28]

> wisekaa ©   (21.09.04 10:17) [25]
> Генератор:
> CREATE GENERATOR NACHISL_GEN;

У меня:

CREATE GENERATOR get_ref_id;

> Таблица:
> CREATE TABLE NACHISL (
>    ID             INTEGER NOT NULL,
>    TYPE_        INTEGER DEFAULT 0 NOT NULL,
>    NAME         VARCHAR(150) NOT NULL);
>
> ALTER TABLE NACHISL ADD CONSTRAINT PK_NACHISL PRIMARY KEY
> (ID);

У меня:

CREATE TABLE t_ref (
 ref_id           INTEGER NOT NULL,
 ref_name         VARCHAR(32) NOT NULL,
 ref_desc         VARCHAR(256) NOT NULL,
 PRIMARY KEY (ref_id));


> Тригер
> CREATE TRIGGER INCNACHISL FOR NACHISL
> ACTIVE BEFORE INSERT POSITION 0
> AS BEGIN
>  IF (NEW.n_id IS NULL) THEN NEW.n_id = GEN_ID(NACHISL_GEN, 1);
> END;

У меня:

CREATE TRIGGER set_ref_id FOR t_ref
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
 NEW.ref_id = GEN_ID(get_ref_id, 1);
END;


> Вставка в таблицу:
> INSERT INTO nachisl (type_, name) VALUES (1, "Оклад");

У меня:

INSERT INTO t_ref (ref_name, ref_desc) VALUES  
 ("name1", "Комментарий");


> Все работает.
А у меня Exception - NULL"у в ref_id не место...

> Romkin ©   (21.09.04 11:01) [27]
> А, да, забыл сказать, почему удобно :)

Удобство понятно, но когда не работает, то тут уж не до удобств, хоть бы раз сработало...

Думал генератор не создался, запустил
select GEN_ID(NACHISL_GEN, 1) from rdb$database
есть значение...

Думал, может триггера нет... попробовал создать ещё раз, тут же выскочил Exception, типа - "Куда мне второй?! Я ещё не знаю, что мне с первым делать..." :)

Кстати, может для триггеров ещё какая библиотека нужна, кроме gds.32? Хотя это-же Delphi... он бы молчать не стал, послал бы сразу и далеко %)


 
wisekaa ©   (2004-09-21 12:28) [29]

Не верю, колись наверное наложил ограничения дополнительные на поле или создал тригер на после вставки.

P.S. Если не лень вышли БД (можно только с этой таблицой) на wisekaapost_собака_mail.ru


 
Romkin ©   (2004-09-21 12:32) [30]

А вполне может быть, что это сам компонент ореть :))
ТЫ required у поля сними, да?


 
P.N.P. ©   (2004-09-21 12:38) [31]

А еще есть такое свойство у компонентов IBX - GeneratorField...


 
Knight ©   (2004-09-21 15:57) [32]

> wisekaa ©   (21.09.04 12:28) [29]
> Не верю,
Станиславский... блин :)

> колись наверное наложил ограничения дополнительные
Это вы, монстры, а у меня всё сверх просто.

> или создал тригер на после вставки.
Минимальные познания в английском всё же имею и BEFORE от AFTER пока отличаю %)

> P.S. Если не лень вышли БД (можно только с этой таблицой)
> на wisekaapost_собака_mail.ru
Зачем высылать? Я те прямо тут нарисую, ведь у меня база не рабоче-гиганская, а тестово-минимальная... но только вечером...


> Romkin ©   (21.09.04 12:32) [30]
> А вполне может быть, что это сам компонент ореть :))

А для чего тогда СУБД если компоненты за неё думают?


> ТЫ required у поля сними, да?

Это уже похоже на подпорки... такое "лишь бы заработало" меня устраивает мало :)


> P.N.P. ©   (21.09.04 12:38) [31]
> А еще есть такое свойство у компонентов IBX - GeneratorField...

Не видел... посмотрю


 
wisekaa ©   (2004-09-21 18:30) [33]

Провел эксперемент, создал базу с одной твоей таблицей!
Выводы:
                Ты скорее всего вставляешь запись в таблицу через компонент TTable, при этом на стороне клиента происходит проверка на то, что поле ref_id должно иметь значение, отсуда и ошибка.
Решение:
                1. Вариант - делать вставку значений через SQL
                2. Вариант - добавить все поля (кроме ref_id) в IBTable (Fields Editor...)
                3. Вариант - не совсем коректный, в качестве ref_id для новой записи можно подставлять 0, тогда проверка пройдет, а генератор присвоит в твоем случае (реализация триггера) новый ref_id.

P.S. Тестовый проект лежит на www.wisekaa.fatal.ru\test_knight.exe


 
Knight ©   (2004-09-21 18:54) [34]

> [33] wisekaa ©   (21.09.04 18:30)
> Провел эксперемент, создал базу с одной твоей таблицей!
> Выводы:
>                 Ты скорее всего вставляешь запись в таблицу
> через компонент TTable, при этом на стороне клиента происходит
С базой работаю через: TIBDatabase, TIBQuery, TIBTransaction...

> Решение:
>                 1. Вариант - делать вставку значений через
> SQL
В смысле сменить TIBQuery на TIBSQL?

>                 2. Вариант - добавить все поля (кроме ref_id)
> в IBTable (Fields Editor...)
Не привык использовать ни TTable, ни TIBTable.

>                 3. Вариант - не совсем коректный, в качестве
> ref_id для новой записи можно подставлять 0, тогда проверка
> пройдет, а генератор присвоит в твоем случае (реализация
> триггера) новый ref_id.
Про это уже писал... не работает.

> P.S. Тестовый проект лежит на www.wisekaa.fatal.ru\test_knight.exe
Щас с частных страничек ничего кроме html и pdf не качаю... антивиря нет :)


 
Vlad ©   (2004-09-21 19:04) [35]


> Knight ©   (21.09.04 18:54) [34]


> С базой работаю через: TIBDatabase, TIBQuery, TIBTransaction...

Просто так пробовал запустить свой запрос, ну скажем через IBExpert ?
А вобще, судя по всему правильный ответ дал Romkin ©   (21.09.04 12:32) [30]
у поля (TField) ref_id нужно свойство Required=false поставить


 
Knight ©   (2004-09-21 19:09) [36]


> [35] Vlad ©   (21.09.04 19:04)
> у поля (TField) ref_id нужно свойство Required=false поставить

А это через чего? Или просто NOT NULL снять?


 
Vlad ©   (2004-09-21 19:12) [37]


> Knight ©   (21.09.04 19:09) [36]


> Или просто NOT NULL снять?

не в коем случае. Т.е. в самой базе ничего не меняй.
Берем IBQuery, дважды по нему щелкаем мышью, появляется Fields Editor, выбираем пункт меню Add all fields. Получаем список полей. Встаем на нужное поле (ref_id) и ставим свойство required=false


 
jack128 ©   (2004-09-21 19:12) [38]

Knight ©   (21.09.04 19:09) [36]
правая кнопка по IbDataSet - Fields Editor, снова правой кнопкой "Add all fields". Далее у нужного поля в инспекторе объектов выставляешь Required=false


 
Knight ©   (2004-09-21 19:20) [39]


> [38] jack128 ©   (21.09.04 19:12)
> Knight ©   (21.09.04 19:09) [36]
> правая кнопка по IbDataSet - Fields Editor, снова правой
> кнопкой "Add all fields". Далее у нужного поля в инспекторе
> объектов выставляешь Required=false

Не... это разврат... я базу конекчу по ходу дела в Runtime"е...


 
jack128 ©   (2004-09-21 19:21) [40]

Knight ©   (21.09.04 19:20) [39]
И что это меняет??


 
wisekaa ©   (2004-09-21 19:21) [41]

См. выше перечисленные ответы.
Менять Query не надо.
А решение твоей проблемы такоеже как и с TTable, см ответ Vlad


 
wisekaa ©   (2004-09-21 19:22) [42]

Как происходит вставка значений в БД?


 
wisekaa ©   (2004-09-21 19:25) [43]

Да и самое главное проверь активность триггера.


 
Knight ©   (2004-09-21 19:26) [44]


> [40] jack128 ©   (21.09.04 19:21)
> Knight ©   (21.09.04 19:20) [39]
> И что это меняет??

Меняет это то, что если база не наёдена, то она генерируется на лету... а тут никаких правых клавиш...


> [42] wisekaa ©   (21.09.04 19:22)
> Как происходит вставка значений в БД?

Инсёртом... через SQL-запрос...


 
Knight ©   (2004-09-21 19:27) [45]


> [43] wisekaa ©   (21.09.04 19:25)
> Да и самое главное проверь активность триггера.

А это разве ничего не значит?

CREATE TRIGGER set_ref_id FOR t_ref
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.ref_id = GEN_ID(get_ref_id, 1);
END;


 
Vlad ©   (2004-09-21 19:28) [46]


> Knight ©   (21.09.04 19:20) [39]

Вобще тут сначала надо разобраться какой запрос у тебя находится в IBQuery. Если SELECT - тогда все вышесказанное справедливо. Если же ты туда сразу INSERT впихнул, тогда мой совет не подходит, причина в чем-то другом.
А так, без разницы в рантайме ты коннектишься к базе или нет, кто мешает в рантайме установить свойство?


 
Knight ©   (2004-09-21 19:30) [47]


> [46] Vlad ©   (21.09.04 19:28)
> А так, без разницы в рантайме ты коннектишься к базе или
> нет, кто мешает в рантайме установить свойство?

Свойство касается только компонента или будет прописано в базу, если в базу, то как?


 
Vlad ©   (2004-09-21 19:31) [48]


> Knight ©   (21.09.04 19:30) [47]

Ответь плз. на [46]
Свойство касается только компонента(т.е. клиентской части), в базе ничего не поменяется


 
Vlad ©   (2004-09-21 19:32) [49]


> Knight ©   (21.09.04 19:30) [47]

Просто судя по всему ошибку генерирует клиент, а не сервер (проверь кстати этот вопрос)


 
wisekaa ©   (2004-09-21 19:32) [50]


> Инсёртом... через SQL-запрос...

Опять не верю.
Вот код из примера, который работает 100%.

procedure TForm1.FormCreate(Sender: TObject);
begin
IBDatabase.DatabaseName:=ExtractFilePath(Application.ExeName)+"knight.gdb";
IBDatabase.Open;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if IBQuery.Active then IBQuery.Close;
IBQuery.Sql.Text := "INSERT INTO t_ref (ref_name, ref_desc) VALUES (:NAME, :COMMENT)";
IBQuery.ParamByName("NAME").AsString := "name"+RandomFrom(["1","2","3","4","5"]);
IBQuery.ParamByName("COMMENT").AsString := "Êîììåíòàðèé";
IBQuery.ExecSQL;
IBTable.Refresh;
IBTableError.Refresh;
end;


 
jack128 ©   (2004-09-21 19:33) [51]

Knight ©   (21.09.04 19:26) [44]
Меняет это то, что если база не наёдена, то она генерируется на лету


У тя у твоей базы фиксированная структура? Или ты каждый раз разные базы создаешь??  В любом случае можно в ран тайм изменить в AfterOpen твоей Квери.   MyField := Sender.FindFiled("ref_id");  if Assigned(MyField) then MyField.Required := False


 
wisekaa ©   (2004-09-21 19:35) [52]


>  [45] Knight ©   (21.09.04 19:27)

Не значит, в процессе эксплуатации Активность может слететь


 
wisekaa ©   (2004-09-21 19:39) [53]

Вот скипт БД

/******************************************************************************/
/***          Generated by IBExpert 2004.09.19 21.09.2004 19:37:00          ***/
/******************************************************************************/

SET NAMES WIN1251;

CREATE DATABASE "D:\DB\Test_Knight\knight.gdb"
USER "SYSDBA" PASSWORD "masterkey"
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1251;

/******************************************************************************/
/***                               Generators                               ***/
/******************************************************************************/

CREATE GENERATOR GET_REF_ID;

/******************************************************************************/
/***                                 Tables                                 ***/
/******************************************************************************/

CREATE TABLE T_REF (
   REF_ID    INTEGER NOT NULL,
   REF_NAME  VARCHAR(32) NOT NULL,
   REF_DESC  VARCHAR(256) NOT NULL
);

/******************************************************************************/
/***                              Primary Keys                              ***/
/******************************************************************************/

ALTER TABLE T_REF ADD PRIMARY KEY (REF_ID);

/******************************************************************************/
/***                                Triggers                                ***/
/******************************************************************************/

SET TERM ^ ;

/* Trigger: SET_REF_ID */
CREATE TRIGGER SET_REF_ID FOR T_REF
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.ref_id = GEN_ID(get_ref_id, 1);
END
^

SET TERM ; ^


 
jack128 ©   (2004-09-21 19:43) [54]

wisekaa ©   (21.09.04 19:32) [50]
if IBQuery.Active then IBQuery.Close;
IBQuery.Sql.Text := "INSERT INTO t_ref (ref_name, ref_desc) VALUES (:NAME, :COMMENT)";
IBQuery.ParamByName("NAME").AsString := "name"+RandomFrom(["1","2","3","4","5"]);
IBQuery.ParamByName("COMMENT").AsString := "Eiiiaioa?ee";
IBQuery.ExecSQL;
IBTable.Refresh;
IBTableError.Refresh


Андрей, ты не путай новичков такими примерами.  Для таких целей IbDataSet есть. ;-)


 
Vlad ©   (2004-09-21 19:45) [55]


> jack128 ©   (21.09.04 19:43) [54]


> Для таких целей IbDataSet есть. ;-)

Дык вот я что-то не пойму, нужен автору вобще DataSet как таковой или нет? Может он просто с помощью TIBQuery хочет Insert в таблицу сделать. Тогда естественно ни о каком required речи быть не может. Тогда тут более загадочная проблема...


 
Knight ©   (2004-09-21 19:47) [56]


> [52] wisekaa ©   (21.09.04 19:35)
> Не значит, в процессе эксплуатации Активность может слететь

"Я сушла с ума... я сошла с уму... какая досада" %)))))

Заработало... справшивается, зачем писать ACTIVE при создании тригера если он всё-равно отключен???


 
wisekaa ©   (2004-09-21 19:51) [57]


> [54] jack128 ©   (21.09.04 19:43)

Извини, я то просто работаю через dbExpress?
Этот пример было бестрее состряпать, и он 100% работал, что доказывало что дело не в БД.


 
wisekaa ©   (2004-09-21 19:52) [58]


> [56] Knight ©   (21.09.04 19:47)

Не понял прокоментируй?


 
Knight ©   (2004-09-21 19:55) [59]


> [58] wisekaa ©   (21.09.04 19:52)
> Не понял прокоментируй?

Что комментировать... сделал
ALTER TRIGGER set_ref_id ACTIVE;

И всё заработало... блин... 52 поста!!! Из-за такой ерунды, никогда бы не подумал, что такое может быть... :(


 
Knight ©   (2004-09-21 19:56) [60]

Я в трансе...может сменить этот Firebird на второй... как там его "Зелёный Дятел", вроде... или у него те же проблемы?


 
jack128 ©   (2004-09-21 19:58) [61]

Knight ©   (21.09.04 19:47) [56]
справшивается, зачем писать ACTIVE при создании тригера если он всё-равно отключен???


То есть ты выполнил запрос

CREATE TRIGGER set_ref_id FOR t_ref
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.ref_id = GEN_ID(get_ref_id, 1);
END;


А триггер стал не активным??? "Не верю" (с) сами знаете кто ;-)


 
wisekaa ©   (2004-09-21 19:58) [62]

<Offtop>

> [54]

Да и для отображения, заведения данных мы в проекте не используем db компоненты (т.е с палитры Data Controls)
</Offtop>


 
wisekaa ©   (2004-09-21 20:00) [63]

jack128 прав данный скрипт 100% создает активный триггер, сбой произошел по другим причинам (мог повлиять и размер страницы, если был 1028, а таблиц с тригерами больше 256).


 
wisekaa ©   (2004-09-21 20:02) [64]

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


 
Knight ©   (2004-09-21 20:04) [65]


> [61] jack128 ©   (21.09.04 19:58)
> То есть ты выполнил запрос
>
> CREATE TRIGGER set_ref_id FOR t_ref
> ACTIVE BEFORE INSERT POSITION 0
> AS BEGIN
> NEW.ref_id = GEN_ID(get_ref_id, 1);
> END;
> А триггер стал не активным??? "Не верю" (с) сами знаете
> кто ;-)

Ага... и я с ним тр...сь с 20.09.04 22:58... :(


 
Knight ©   (2004-09-21 20:06) [66]


> [63] wisekaa ©   (21.09.04 20:00)
> jack128 прав данный скрипт 100% создает активный триггер,
> сбой произошел по другим причинам (мог повлиять и размер
> страницы, если был 1028, а таблиц с тригерами больше 256).

страница - 4096
таблица - одна
тригер - один

"Ни-че-го не понимаю" (с) сами знаете кто... :)


 
Knight ©   (2004-09-21 20:07) [67]

В общем, всем СПАСИБО... и мудрому Ка в отдельности :)


 
jack128 ©   (2004-09-21 20:07) [68]


> как там его "Зелёный Дятел", вроде...
LOL :-)) Yaffil. Но он платный (хотя и н дорогой)  Но проблемы не в сервере - 100%
wisekaa ©   (21.09.04 20:02) [64]
Надо посмотреть как компонент IBDataBase создает триггера,

?? А как с помощью IbDataBase создать триггеры???

Knight ©   (21.09.04 20:04) [65]
не, что то тут не то. Напомни свою версию FB? FB1.5 Release ?

<off>
wisekaa ©   (21.09.04 19:58) [62]
Я тоже с этой закладки компоненты не беру. А вот с закладки EhLib беру :-)
</off>


 
Knight ©   (2004-09-21 20:15) [69]

> [68] jack128 ©   (21.09.04 20:07)
> > как там его "Зелёный Дятел", вроде...
> LOL :-)) Yaffil. Но он платный (хотя и н дорогой)  Но проблемы
> не в сервере - 100%
А я читал, что Interbase 6, Firebird и Yaffil, все бесплатные, только первые бесплатные с исходникаки, а дятел без. Тоже где-то закачан...

> ?? А как с помощью IbDataBase создать триггеры???
Так как... запросом...

IBQuery.SQL.Text:="CREATE TRIGGER set_ref_id FOR t_ref
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.ref_id = GEN_ID(get_ref_id, 1);
END;";
IBQuery.ExecSQL;


> Knight ©   (21.09.04 20:04) [65]
> не, что то тут не то. Напомни свою версию FB? FB1.5 Release
1.5.1.4481


 
jack128 ©   (2004-09-21 20:21) [70]

Knight ©   (21.09.04 20:15) [69]
Yafill Embb - бесплатный. А просто Yaffil платный. Хотя после объединения FB и Ya это уже не имеет значения..


 
Knight ©   (2004-09-21 20:36) [71]


> [70] jack128 ©   (21.09.04 20:21)
> Yafill Embb - бесплатный. А просто Yaffil платный. Хотя
> после объединения FB и Ya это уже не имеет значения..

Так мне локальный и нужен... однопользовательский, надоело уже с BDE таскаться, а тут реальный сервер, без инсталяции и всего полтора метра...


 
Knight ©   (2004-09-21 20:40) [72]

Так, что всё-же лучше? Firebird или Yaffil? Читал, что Yaffil это тот же FB, только с дополнительными наворотами...


 
jack128 ©   (2004-09-21 22:47) [73]

Knight ©   (21.09.04 20:40) [72]
Типа того. Код Ya оптемизирован под Win платформу.  Ну есть пара дополнительных фишек, но после объявления об объединении с FB он фактически прикратил развитие..


 
Knight ©   (2004-09-21 23:21) [74]

А какая последняя версия Firebird? В IB Expert светится 2.0 , но нигде не могу найти, всё везде планы на будущее, круче, выше, сильнее и т.п.



Страницы: 1 2 вся ветка

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.68 MB
Время: 0.027 c
14-1095948726
Zombie
2004-09-23 18:12
2004.10.10
Хочу FM-тюнер!!!


6-1091073148
maxkool
2004-07-29 07:52
2004.10.10
фрейм2


4-1094474007
edthon
2004-09-06 16:33
2004.10.10
СОМ-порт, задержка между командами


1-1096231022
Kolan
2004-09-27 00:37
2004.10.10
Визуальные стили (или как их там)


14-1095673374
infom
2004-09-20 13:42
2004.10.10
Немодерируемая ветка !!!