![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL запрос: alter table table1 alter newcolumn1... [IB6.x, FireBird]
NeyroSpace © (2002-10-11 12:38:00)Interbase
Мне нужно в TABLE1 добавить столбец, кот. является внешним ключем к TABLE2.ID
столбец добавляется, но вот сделать его внешним ключем не получается...
Помогите! Как или сразу добавить столбец как внешний ключ
или сначала добавить, а потом изменить его, сделав внешним ключом?
kaif (2002-10-11 22:21:00) [1]unsuccessful metadate update.
object TABLE2 is in use.
это ошибка Firebird.
если был хоть один select в данной сессии (коннекте, атачменте) к таблице TABLE2 илисуществует коннект с другой базой и в ней есть одноименная таблица TABLE2 (!!!) илиимеется просто второй коннект, то создание FOREIGN KEY так глюкавит.
Поэтому, перед созданием FOREIGN KEY:
1. Закрываешь все соединения с базой, а желательно с сервером вообще.
2. Открываешь одно соединение (connect) и даешь команду
alter table TABLE1 add CONSTRAINT myconstraint
FOREIGN KEY (NEWCOLUMN1) REFERENCES TABLE2 (id)
Разумеется, все это сработает только при условии, что ссылочная целостность не нарушится сразу. То есть столбец не должен содержать неразрешимых ссылок на TABLE2.
Val (2002-10-11 14:02:00) [2]www.ibexpert.com кажется. free for xUSSR.
NeyroSpace (2002-10-11 14:00:00) [3]Блин это чертов DB Explorer завис и ее юзал :-Е
Все заработало спасибо.
А есть что-ниб удобнее DB Explorer, чтобы и FireBird юзал?
Val (2002-10-11 13:21:00) [4]object TABLE2 is in use.
ну ясно же пишет.отстаньте от таблички :)
NeyroSpace (2002-10-11 13:20:00) [5]1. добавил столбец NEWCOLUMN1
2. заполнил значениями из будущего внешнего ключа (из TABLE2.ID)
3. пытаюсь создать внешний ключ
Получаю ошибку, такую же как и до этого:
alter table TABLE1 add CONSTRAINT myconstraint
FOREIGN KEY (id) REFERENCES TABLE2
Invalid modify request.
unsuccessful metadate update.
object TABLE2 is in use.
Val (2002-10-11 12:54:00) [6]его нужно, после создания, заполнить данными, содержащими какое-нибудь значение из TABLE2.ID.
потом создавать констреинт, а так у вас null-значения в новом столбце, что нарушает ограничение, вот оно и не создается.
NeyroSpace (2002-10-11 12:49:00) [7]Или если в таблице есть данные эта операция обречена на провал?