Форум: "Базы";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];
ВнизINTERBASE и CONSTRAINT Найти похожие ветки
← →
fishka (2002-05-24 12:05) [0]Не получается добавить новые ограничения целостности для таблицы (пробую и из программы и через SQL EXplorer).
Выдается ошибка: object PPP is in use. Но я же ничего не открываю. Вот код:
ALTER TABLE BBB ADD CONSTRAINT BBB_KS
FOREIGN KEY (ks)
REFERENCES PPP
или так:
ALTER TABLE BBB ADD CONSTRAINT BBB_KS
FOREIGN KEY (ks)
REFERENCES PPP (OWK)
Для таблицы PPP построен первичный ключ по столбцу OWK.
Где ошибка? Помогите, пожалуйста.
← →
Alexandr (2002-05-24 12:07) [1]1) выгони нахер пользователей из базы
2) Перезапусти ibserver
← →
kaif (2002-05-24 12:18) [2]Это ошибка IB. Она есть даже в FireBird.
Ошибка проявляется следующим образом.
При попытке создать FOREIGN KEY сервер говорит, что таблица используется, хотя это не так, если:
1. К данной базе подключено более 1 пользователя.
2. Есть другая база с одноименной таблицей и к ней подключен хоть 1 пользователь.
Единственный способ избавиться от этой ошибки - переподключиться к базе + пользователь только Вы.
Ошибка очень неприятная.:((
← →
fishka (2002-05-24 12:22) [3]>Alexandr ©
Спасибо за совет. Но сервер локальный, никаких пользователей вроде бы нет.
← →
kaif (2002-05-24 12:28) [4]Может оказаться 2 коннекта по причине того, что один коннект из проекта в Delphi (например, в данный момент IBDatabase.Connected = True), а второй коннект из запущенного из-под Delphi приложения. Или включена IBConsole и сейчас работает с базой. Важно не количество разных юзеров, а количество коннектов (attachments).
← →
Alexandr (2002-05-24 12:34) [5]или сам этот индекс юзал раньше .
перестартуй ibserver и все должно быть ОК
← →
fishka (2002-05-24 13:51) [6]Спасибо всем за советы. Вечером попробую (сейчас нет 6 IB).
И еще вопрос: если внешних ключей несколько, как будет выглядеть текст запроса при создании таблицы:
CREATE TABLE BBB
( OWK SMALLINT NOT NULL,
code_1 SMALLINT NOT NULL,
code_2 SMALLINT NOT NULL,
.........,
NAME CHAR(25),
PRIMARY KEY (OWK),
constraint po_1
foreign key (code_1) references bd1 (code_n1),
constraint po_2
foreign key (code_2) references bd2 (code_n2))
Так было написано в моей программе, но создать таблицу с 2 внешними ключами не удалось, только с одним. В чем моя ошибка?
← →
kaif (2002-05-24 14:01) [7]Я не пробовал прямо в тексте CREATE TABLE создавать более 1 внешнего ключа, но я знаю, что ряд отдельных команд
ALTER TABLE ADD CONSTRAINT...
подряд сработают. Если ты извлечешь скрипт базы, то там это будет происходить именно так. сначала создание таблицы, затем ряд отдельных команд ALTER TABLE с добавлением внешних ключей.
← →
fishka (2002-05-24 14:59) [8]kaif © (24.05.02 14:01)
У меня тоже таблица создается только с одним внешним ключом.
А если пишу больше, то возникает ошибка. Буду создавать с одним, а потом уже ALTER TABLE ADD CONSTRAINT. Спасибо.
← →
Val (2002-05-24 17:02) [9]>fishka (24.05.02 13:51)
создать таблицу с 2 внешними ключами не удалось
почему, что за ошибка?
code_1 SMALLINT NOT NULL
лучше объявить так:
constraint NN_BBB_code_1 check (code_1 is not null)
← →
fishka (2002-05-24 17:27) [10]Val © (24.05.02 17:02)
Непонятно в данном синтаксисе, где указывается тип столбца (SMALLINT, Integer и т.п.).
← →
Val (2002-05-24 17:41) [11]я имел ввиду только ограничение NOT NULL, поскольку при вашем его определении сервер все равно создаст констреинт, но с системным именем, а так вы имеете констреинт, по имени которого с первого взгляда можно понять что он означает. Также и для других, желательно давать понятные имена, например используя префиксы FK_,PK_ и т.д.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c