Не удается создать внешний ключ на сервере Sql

У меня есть две таблицы: SDCUST и недавно созданная SDRTS (определенная ниже).

Определение таблицы SDCUST

введите здесь описание изображения

DROP TABLE SDRTS
  GO
  CREATE TABLE SDRTS(
    BGTID int NOT NULL,
    RTSID uniqueidentifier NOT NULL,
    CONSTRAINT PK_SDRTS PRIMARY KEY CLUSTERED (BGTID,RTSID),
    CUSTID uniqueidentifier NOT NULL,
    CONSTRAINT FK_SDRTS_SDCUST FOREIGN KEY(CUSTID)
    REFERENCES SDRTS(CUSTID),
    BGRPID_1 uniqueidentifier NOT NULL,
    BGRPID_2 uniqueidentifier NOT NULL,
    INCRT FLOAT NULL,
    CURRID int NOT NULL,
    EDATE datetime NULL,
    EUSRID uniqueidentifier NULL,
    UDATE datetime NULL,
    UUSRID uniqueidentifier NULL,
    V001 float NULL,

Я хочу, чтобы CUSTID был внешним ключом в новой таблице, но получаю сообщение об ошибке:

Msg 3701, Level 11, State 5, Line 1 Невозможно удалить таблицу "SDRTS", потому что она не существует или у вас нет разрешения.
Msg 1776, Level 16, State 0, Line 3 Нет первичных или Ключи-кандидаты в ссылочной таблице «SDRTS», которые соответствуют списку ссылочных столбцов во внешнем ключе «FK_SDRTS_SDCUST».
Сообщение 1750, уровень 16, состояние 0, строка 3 Не удалось создать ограничение или индекс. См. Предыдущие ошибки.

Как я могу создать этот ключ?


person Community    schedule 18.07.2017    source источник
comment
Вы ссылаетесь на ту же таблицу. REFERENCES SDRTS(CUSTID) Вместо этого вам нужно ссылаться на SDCUST таблицу.   -  person SS_DBA    schedule 18.07.2017
comment
ОГРАНИЧЕНИЕ FK_SDRTS_SDCUST FOREIGN KEY (CUSTID) ССЫЛКИ на SDCUST (CUSTID), но сообщение об ошибке: Msg 3701, Level 11, State 5, Line 1 Невозможно удалить таблицу «SDRTS», потому что она не существует или у вас нет разрешения. Сообщение 1776, уровень 16, состояние 0, строка 3 В указанной таблице «SDCUST» нет первичных ключей или ключей-кандидатов, которые соответствуют списку ссылающихся столбцов во внешнем ключе «FK_SDRTS_SDCUST». Сообщение 1750, уровень 16, состояние 0, строка 3 Не удалось создать ограничение или индекс. См. Предыдущие ошибки.   -  person    schedule 18.07.2017
comment
Хм. Вы можете показать схему таблицы SDCUST. Кроме того, поставьте IF Exists перед оператором drop, чтобы удалить первую ошибку.   -  person SS_DBA    schedule 18.07.2017
comment
@WEI_DBA конечно, я добавил как картинку, дизайн таблицы.   -  person    schedule 18.07.2017
comment
BGTID в SDRTS таблице то же самое, что и в SDCUST таблице?   -  person SS_DBA    schedule 18.07.2017
comment
Вы не можете ссылаться на часть ПК. Вам нужно сослаться на все ПК.   -  person SS_DBA    schedule 18.07.2017
comment
То же самое, но в таблице SDRTS Not Null @WEI_DBA Если да, будете ли вы с Teamviewer?   -  person    schedule 18.07.2017
comment
ОГРАНИЧЕНИЕ FK_SDRTS_SDCUST FOREIGN KEY (CUSTID) REFERENCES SDCUST (CUSTID). В указанной таблице «SDCUST» нет первичных или возможных ключей, которые соответствуют списку ссылающихся столбцов во внешнем ключе «FK_SDRTS_SDCUST».   -  person    schedule 18.07.2017
comment
Добавьте оба столбца. CONSTRAINT FK_SDRTS_SDCUST FOREIGN KEY(BGTID, CUSTID) REFERENCES SDCUST(BGTID, CUSTID)   -  person SS_DBA    schedule 18.07.2017
comment
окей, удачно Большое спасибо.   -  person    schedule 18.07.2017


Ответы (1)


Просто чтобы следить за комментариями, это было решено:

Добавьте оба столбца. CONSTRAINT FK_SDRTS_SDCUST FOREIGN KEY(BGTID, CUSTID) REFERENCES SDCUST(BGTID, CUSTID)

person Mark Schultheiss    schedule 06.12.2018