SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » Как построить FK на PK?
Как построить FK на PK? [сообщение #3489] Mon, 23 October 2023 18:55 Переход к предыдущему сообщению
shalamyansky в настоящее время не в онлайне  shalamyansky
Сообщений: 144
Зарегистрирован: August 2022
Senior Member
CREATE TABLE MASTER (
    ID  BIGINT NOT NULL
);
ALTER TABLE MASTER ADD CONSTRAINT PK_MASTER PRIMARY KEY (ID);

CREATE TABLE SLAVE (
    ID        BIGINT NOT NULL,
    ADDITION  VARCHAR(100)
);
ALTER TABLE SLAVE ADD CONSTRAINT PK_SLAVE PRIMARY KEY (ID);
ALTER TABLE SLAVE ADD CONSTRAINT FK_SLAVE FOREIGN KEY (ID) REFERENCES MASTER (ID);
В результате имеем 2 идентичных по содержанию индекса PK_SLAVE и FK_SLAVE, что выглядит напрасной тратой ресурсов.

Попытка
ALTER TABLE SLAVE ADD CONSTRAINT FK_SLAVE FOREIGN KEY (ID) REFERENCES MASTER(ID) USING INDEX PK_SLAVE;
приводит к
ALTER TABLE SLAVE failed. Index PK_SLAVE already exists.
Возможно, в случае, когда индекс FK_SLAVE таки вроде бы создался, он на самом деле не создается, а неявно используется PK_SLAVE, это было бы красиво и утешительно. Но возможно, что и нет. Как оно на самом деле, и как обойтись одним индексом?

 
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Предыдущая тема: Wirecompression
Следующая тема: Быстродействие UDR
Переход к форуму:
  


Текущее время: Thu May 16 13:54:25 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00792 секунд