Не создается индекс
-
- Сообщения: 14
- Зарегистрирован: 14 апр 2005, 01:20
Не создается индекс
(FB1.52, IBExpert)
Помогите,
-------------
CREATE TABLE TABLE_1 (
ID INTEGER NOT NULL,
NAME INTEGER);
alter table TABLE_1 add constraint PK_TABLE_1 primary key (ID);
-------------
Запись правильна, а тем не менее при попытке ее запуска выдается следующее:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 24, char -1.
ALTER.
То есть индекс устанавливаться не желает, хотя в системных таблицах вообще нет никаких индексов ссылающихся таблу ITOGATTESTAT и таблы такой нет.
2я непонятка попытка создать таблу вручную завершается успешно, НО несмотря на то что формируется код точно такой как я уже указал и имя у новосозданного индекса должно быть PK_ITOGATTESTAT, в реальности формируется индекс с именем типа RDB$PRIMARYxxx.
Помогите,
-------------
CREATE TABLE TABLE_1 (
ID INTEGER NOT NULL,
NAME INTEGER);
alter table TABLE_1 add constraint PK_TABLE_1 primary key (ID);
-------------
Запись правильна, а тем не менее при попытке ее запуска выдается следующее:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 24, char -1.
ALTER.
То есть индекс устанавливаться не желает, хотя в системных таблицах вообще нет никаких индексов ссылающихся таблу ITOGATTESTAT и таблы такой нет.
2я непонятка попытка создать таблу вручную завершается успешно, НО несмотря на то что формируется код точно такой как я уже указал и имя у новосозданного индекса должно быть PK_ITOGATTESTAT, в реальности формируется индекс с именем типа RDB$PRIMARYxxx.
-
- Сообщения: 14
- Зарегистрирован: 14 апр 2005, 01:20
-
- Сообщения: 14
- Зарегистрирован: 14 апр 2005, 01:20
тебе же объясняют - два оператора в SQL Editor надо выполнять по очереди. Или заселектить один, нажать "выполнить" и Commit, затем заселектить второй, и опять "выполнить" и commit.
вразумительные имена индексов должны быть что при создании ПК в create table, что при alter table, если база в третьем диалекте и ты пишешь constraint consr_name primary key...
вразумительные имена индексов должны быть что при создании ПК в create table, что при alter table, если база в третьем диалекте и ты пишешь constraint consr_name primary key...
-
- Сообщения: 14
- Зарегистрирован: 14 апр 2005, 01:20
- я выполняю команды в редакторе скриптов. Так список команд теперь не выдает ошибки. А вот другой вопрос остался ИМЕНА новосозданных ИНДЕКСОВ все еще RDB$PRIMARYxxx. база в третьем диалекте и я пишу:kdv писал(а):тебе же объясняют - два оператора в SQL Editor надо выполнять по очереди. Или заселектить один, нажать "выполнить" и Commit, затем заселектить второй, и опять "выполнить" и commit.
вразумительные имена индексов должны быть что при создании ПК в create table, что при alter table, если база в третьем диалекте и ты пишешь constraint consr_name primary key...
CREATE TABLE TABLE_1 (
ID INTEGER NOT NULL,
NAME INTEGER);
alter table TABLE_1 add constraint PK_TABLE_1 primary key (ID);
Вроде все правильно...
-
- Сообщения: 14
- Зарегистрирован: 14 апр 2005, 01:20
Может есть какие-нибудь подозрения из-за чего индексы не принимают указанных имен? И еще, что такое база ODS 10.1 и где это можно посмотреть, если не секрет?kdv писал(а):у меня не воспроизводится. база ODS 10.1, индексы соответствуют именам constraint.
Кстати, у меня раньше индексы тоже принимали указанные имена, но не могу сказать после какого момента это изменилось. Я недавно перешел с FB 1.5 > 1.52 и IBExpert2004>IBExpert2005, если важно...
Последний раз редактировалось Karburator 14 апр 2005, 14:45, всего редактировалось 1 раз.
ODS - gstat -h или IBAnalyst, и в www.ibase.ru/devinfo/prevver.htm
-
- Сообщения: 14
- Зарегистрирован: 14 апр 2005, 01:20
-
- Сообщения: 14
- Зарегистрирован: 14 апр 2005, 01:20
-
- Сообщения: 14
- Зарегистрирован: 14 апр 2005, 01:20
стоп-стоп!!!
надо не
а
то есть, ПК или UNIQUE создавать не "по месту", а в конце create table. я уж и не помню, когда таким синтаксисом пользовался.
Кстати, только что проверил - все едино. FB 1.5, база ODS 10.1, третий диалект. Оба оператора приводят к созданию индекса PK_TABLE_1 по первичному ключу. Никаких RDB$PRIMARYxx. Могу картинку из IBExpert прислать.
надо не
Код: Выделить всё
CREATE TABLE table_1 (
ID INTEGER NOT NULL CONSTRAINT PK_table_1 PRIMARY KEY,
NAME VARCHAR(100) );
Код: Выделить всё
CREATE TABLE table_1 (
ID INTEGER NOT NULL,
NAME VARCHAR(100),
CONSTRAINT PK_table_1 PRIMARY KEY (ID));
Кстати, только что проверил - все едино. FB 1.5, база ODS 10.1, третий диалект. Оба оператора приводят к созданию индекса PK_TABLE_1 по первичному ключу. Никаких RDB$PRIMARYxx. Могу картинку из IBExpert прислать.
-
- Сообщения: 14
- Зарегистрирован: 14 апр 2005, 01:20
Да там дело не в gds-ке было. Он в базу лазал вообще то одним сервером, то другим и сам толком не знал, когда у него какой был запущен. Имхо там вообще полная каша, ей бы b/r сейчас сделать да потом триггера с процедурами перекомпилить все.kdv писал(а):вот не надо. у меня эксперимент проходил под FB 1.5 с gds32.dll от IB 7.5.
-
- Сообщения: 14
- Зарегистрирован: 14 апр 2005, 01:20
А я не утверждаю, что они друг другу мешают, возможно FB коряво встал в первый раз при инсталяции...kdv писал(а):вот не надо. у меня эксперимент проходил под FB 1.5 с gds32.dll от IB 7.5. Где-то ты сам накосячил. Сам понимаешь - тут все примитивно. Есть клиент, и есть сервер. Больше нету ничего. У меня на машине стоят вообще IB 6, IB 6.5, IB 7.1, IB 7.5, FB 1.0, 1.5, 2.0 - и ничего. никто никому не мешает.
-
- Сообщения: 14
- Зарегистрирован: 14 апр 2005, 01:20
насчет того что я вперемешку то под одним сервером лазил то под другим неверная предпосылка, через IB6.5 я стал лазить от безысходности, а до этого ни-ниMerlin писал(а):Да там дело не в gds-ке было. Он в базу лазал вообще то одним сервером, то другим и сам толком не знал, когда у него какой был запущен. Имхо там вообще полная каша, ей бы b/r сейчас сделать да потом триггера с процедурами перекомпилить все.kdv писал(а):вот не надо. у меня эксперимент проходил под FB 1.5 с gds32.dll от IB 7.5.
К тому же после переустановки FB в той же самой базе все стало ок. Так что дело не в каше