Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: внешний ключ по существующему индексу в pg

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: внешний ключ по существующему индексу в pg(postgres)
LIME
Отправлено: 02 Сентября, 2017 - 15:37:01
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




всем привет
вопрос к товарищу Мелкому
если я создал внешний ключ по полю например foreign_id_fk, и уже существует индекс foreign_id, other_column_id, other_column2_id
будет ли он использован или новый создаст? как проверить? как заставить?

(Отредактировано автором: 02 Сентября, 2017 - 15:38:25)

 
 Top
Мелкий Супермодератор
Отправлено: 02 Сентября, 2017 - 17:22:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Создание FK требует уже созданный уникальный ключ на таблице на которую ссылаемся. Если уникальный ключ по трём полям, а повесить FK хотим не на все 3 - то получим отлуп. Это вот здесь (кстати, deferrable ограничения для fk использовать тоже нельзя)
Для таблицы, которая будет содержать ссылку - индекс навешиванием FK вообще не создаётся никакой и нигде, и его существование не проверяется никак. Что иногда бывает сюрпризом в продакшене.

Спойлер (Отобразить)


-----
PostgreSQL DBA
 
 Top
LIME
Отправлено: 02 Сентября, 2017 - 18:50:06
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ага
в общих чертах понял
спасибо большое портянку изучу подробно на работе
спс еще раз
(Добавление)
Мелкий пишет:
индекс навешиванием FK вообще не создаётся никакой и нигде,
разве в мускуле не создается если не было? а?

(Отредактировано автором: 02 Сентября, 2017 - 18:53:01)

 
 Top
Мелкий Супермодератор
Отправлено: 02 Сентября, 2017 - 19:13:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




LIME пишет:
разве в мускуле не создается если не было?

нигде относилось к таблицам в базе: ни в той, на которую говорим alter ни в той, на которую указываем, ни по дереву наследования или ещё каким-то таблицам.
У mysql помнится да, неявное построение индекса происходит.


-----
PostgreSQL DBA
 
 Top
LIME
Отправлено: 02 Сентября, 2017 - 19:49:19
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Ага
Понятно
Буду знать
Спасибо
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Администрирование БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB