powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проблемы с foreign key
12 сообщений из 12, страница 1 из 1
Проблемы с foreign key
    #32339462
anastassia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Такая беда: не дропаются таблицы, которые содержат foreign key. То есть они нормально создаются, но когда я не переконнекчиваясь к базе хочу таблицу убрать, IBConsole мне сообщает "Unsuccessful metadata update: object "имя таблицы" is in use".Чем он используется, если всего одна коннекция к базе? Коммит после создания не помогает. Как таблицу в таком случае удалить?
Немного другая ситация. Переконнектилась и хочу удалить таблицы по списку - через ibconsole загружаю скрипт и запускаю его. Первая в списке таблица(содержит foreign key'и) удаляется, а следующая за ней, никак с первой не связанная, но тоже с foreign key`ями не удаляется(и последующие соответственно тоже). Выдаётся ошибка как в первом случае.
Как посоветуете решить проблему?
...
Рейтинг: 0 / 0
Проблемы с foreign key
    #32339473
Малиновский Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как создавались внешние ключи. Скрипт, пожалуйста.
...
Рейтинг: 0 / 0
Проблемы с foreign key
    #32339510
Void!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй сначала удалить foreign key если не удалятся то удали триггеры определяющие поведение отношения целостности для этого ключа
...
Рейтинг: 0 / 0
Проблемы с foreign key
    #32339513
anastassia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример с 5-ю таблицами:
CREATE TABLE Person (
person_id integer NOT NULL PRIMARY KEY,
FIO varchar(50) NOT NULL,
age smallint NOT NULL,
birthday date NOT NULL,
sex char(1) NOT NULL,
address varchar(40) NOT NULL,
phone char(20) NOT NULL,
desease_type varchar(1) NOT NULL
);
CREATE TABLE Operation (
operation_id smallint NOT NULL PRIMARY KEY,
operation_name varchar(80) NOT NULL
);
CREATE TABLE PersonOperation(
operation_id smallint NOT NULL,
person_id integer NOT NULL,
operation_type char(1),
FOREIGN KEY (operation_id) REFERENCES Operation (operation_id),
FOREIGN KEY (person_id) REFERENCES Person (person_id) ON DELETE CASCADE
);
CREATE TABLE Difficulties (
difficulty_id smallint NOT NULL PRIMARY KEY,
description varchar(50) NOT NULL
);
CREATE TABLE PersonDifficulties (
person_id integer NOT NULL,
difficult_id smallint NOT NULL,
FOREIGN KEY (person_id) REFERENCES Person (person_id) ON DELETE CASCADE,
FOREIGN KEY (difficult_id) REFERENCES Difficulties (difficulty_id)
);
Вот всё это успешно создалось и мне потребовалось тут же удалить таблицу PersonDifficulties. Вот тогда и ругается. Если мне надо все удалить порядок в скрипте такой:
PersonOperation,PersonDifficulties,Difficulties,Operation.Person. При новой коннекции PersonOperation удалит, а на следущую отругается
...
Рейтинг: 0 / 0
Проблемы с foreign key
    #32339529
anastassia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
триггеры в я данном случае не использую. А как удалить констрэйнты? Просто раньше работала с ораклом и в нём с такими проблемами не встречалась.
...
Рейтинг: 0 / 0
Проблемы с foreign key
    #32339640
Void!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я использую IBExpert для разработки а как составить скрипт для удаления этих триггеров не знаю
...
Рейтинг: 0 / 0
Проблемы с foreign key
    #32339660
Void!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у тебя в таблице PersonOperation(
.....
FOREIGN KEY (person_id) REFERENCES Person (person_id) ON DELETE CASCADE
);

здесь ON DELETE CASCADE обеспечивается триггером имя к-го нужно определить. Аналогично и в PersonDifficulties
...
Рейтинг: 0 / 0
Проблемы с foreign key
    #32339712
anastassia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разве триггер который отрабатывает "ON DELETE CASCADE" не создается автоматически? Иначе зачем нужна эта фраза, если можно прекрасно самому написать и навеситьтриггер. Но даже если мне и надо опеределить его имя, на удаление это никак не повлияет, как мне кажется. У меня есть таблицы с FОREIGN KEY без "ON DELETE CASCADE", они не хотят удаляться точно таким же образом. Я именно эти таблицы в качестве примера привела только потому, что в них полей меньше :)
...
Рейтинг: 0 / 0
Проблемы с foreign key
    #32339925
Andrey_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да это все IBConsole виновата. Незнаю как и почему но если она вдруг тебе говорит object in use переконектится к базе помогает. А вот IBExpert вроде такого не делает.
...
Рейтинг: 0 / 0
Проблемы с foreign key
    #32341235
july_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня то же самое.
Пробовала и в IBConsole, и в SQLExplorer удалить из таблицы все fk, первый удаляется, а дальше index is in use. Я-то думала, что так и должно быть!
...
Рейтинг: 0 / 0
Проблемы с foreign key
    #32342302
Void!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все таки тебе нужно сначала удалить обьекты отношений целлостности таблиц. А чтобы что-нибудь удалить нужно знать что (вот для чего нужно определить имя). поэтому лучше установи IBExpert и посмотри зависимости
...
Рейтинг: 0 / 0
Проблемы с foreign key
    #32342410
anastassia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. С IBExpert проблемы не стало.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проблемы с foreign key
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]