У меня есть две таблицы: 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 Не удалось создать ограничение или индекс. См. Предыдущие ошибки.
Как я могу создать этот ключ?
REFERENCES SDRTS(CUSTID)
Вместо этого вам нужно ссылаться наSDCUST
таблицу. - person SS_DBA   schedule 18.07.2017SDCUST
. Кроме того, поставьтеIF Exists
перед оператором drop, чтобы удалить первую ошибку. - person SS_DBA   schedule 18.07.2017BGTID
вSDRTS
таблице то же самое, что и вSDCUST
таблице? - person SS_DBA   schedule 18.07.2017CONSTRAINT FK_SDRTS_SDCUST FOREIGN KEY(BGTID, CUSTID) REFERENCES SDCUST(BGTID, CUSTID)
- person SS_DBA   schedule 18.07.2017