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

Вниз

SQL запрос: alter table table1 alter newcolumn1...   Найти похожие ветки 

 
NeyroSpace ©   (2002-10-11 12:38) [0]

Interbase
Мне нужно в TABLE1 добавить столбец, кот. является внешним ключем к TABLE2.ID
столбец добавляется, но вот сделать его внешним ключем не получается...
Помогите! Как или сразу добавить столбец как внешний ключ
или сначала добавить, а потом изменить его, сделав внешним ключом?


 
NeyroSpace ©   (2002-10-11 12:49) [1]

Или если в таблице есть данные эта операция обречена на провал?


 
Val ©   (2002-10-11 12:54) [2]

его нужно, после создания, заполнить данными, содержащими какое-нибудь значение из TABLE2.ID.
потом создавать констреинт, а так у вас null-значения в новом столбце, что нарушает ограничение, вот оно и не создается.


 
NeyroSpace ©   (2002-10-11 13:20) [3]

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 13:21) [4]

object TABLE2 is in use.
ну ясно же пишет.отстаньте от таблички :)


 
NeyroSpace ©   (2002-10-11 14:00) [5]

Блин это чертов DB Explorer завис и ее юзал :-Е
Все заработало спасибо.
А есть что-ниб удобнее DB Explorer, чтобы и FireBird юзал?


 
Val ©   (2002-10-11 14:02) [6]

www.ibexpert.com кажется. free for xUSSR.


 
kaif ©   (2002-10-11 22:21) [7]

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.



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

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

Наверх




Память: 0.48 MB
Время: 0.01 c
14-101452
vopros
2002-10-10 17:56
2002.10.31
Выключил, телефоны так хорошо стало.


14-101527
sancho
2002-10-12 23:17
2002.10.31
Давайте обсудим видиоролик см. выше


7-101555
Yaro
2002-08-13 21:58
2002.10.31
Чтение / Запись в LPT-порт !!! (мне надо управлять электроникой!)


3-101050
Mister-D
2002-10-08 12:48
2002.10.31
Графическое представление химических формул


6-101412
delpher_gray
2002-08-30 17:43
2002.10.31
Передача файлов через сокеты