На ПК таблицы А ссылается ФК таблицы В. Невозможно сбросить ПК таблицы А

MS SQL Server

Я делаю звездную схему. Я установил PK's а также FK для моих таблиц и сейчас пытаюсь написать процедуру, которая удалит ограничения, обрежет таблицы, снова добавит ограничения, а затем снова заполнит таблицы. Когда я пытаюсь отбросить ограничения, я получаю сообщение об ошибке:

"Ограничение PK_TIMEDIM ссылается на таблицу SalesFactTableограничение внешнего ключа FK_SALESFACTTABLE, Не удалось отбросить ограничение."

РЕДАКТИРОВАТЬ: Одна проблема решена. Еще один найден. Я получаю ту же ошибку, за исключением того, что есть таинственные, автоматически сгенерированные FK's такие как FK__SalesFact__CUST___19DFD96B,

Пожалуйста, покажи мне, что я делаю не так.

ALTER PROCEDURE [dbo].[A11]
AS
BEGIN

--Drop constraints
ALTER TABLE SalesFactTable
DROP CONSTRAINT FK_SALESFACTTABLE

ALTER TABLE SalesFactTable
DROP CONSTRAINT PK_SALESFACTTABLE

ALTER TABLE TimeDim
DROP CONSTRAINT PK_TIMEDIM

ALTER TABLE CustomerDim
DROP CONSTRAINT PK_CUSTOMERDIM

ALTER TABLE PartDim
DROP CONSTRAINT PK_PARTDIM

--Truncate tables
TRUNCATE TABLE TimeDim
TRUNCATE TABLE CustomerDim
TRUNCATE TABLE PartDim
TRUNCATE TABLE SalesFactTable

--Add constraints
ALTER TABLE TimeDim
ADD CONSTRAINT PK_TIMEDIM PRIMARY KEY (TIME_ID)

ALTER TABLE CustomerDim
ADD CONSTRAINT PK_CUSTOMERDIM PRIMARY KEY (CUST_ID)

ALTER TABLE PartDim
ADD CONSTRAINT PK_PARTDIM PRIMARY KEY (PART_ID)

ALTER TABLE SalesFactTable
ADD CONSTRAINT FK_SALESFACTTABLE FOREIGN KEY (TIME_ID) REFERENCES TimeDim (TIME_ID),
FOREIGN KEY (CUST_ID) REFERENCES CustomerDim (CUST_ID),
FOREIGN KEY (PART_ID) REFERENCES PartDim (PART_ID)

ALTER TABLE SalesFactTable
ADD CONSTRAINT PK_SALESFACTTABLE PRIMARY KEY (TIME_ID, CUST_ID, PART_ID)

1 ответ

Решение

** На внешние ключи ссылается Первичный ключ, поэтому вы не можете удалить первичный ключ перед удалением ограничения Внешнего ключа. поэтому сначала необходимо удалить внешний ключ, чтобы удалить ограничение Первичный ключ из таблицы.

**

ALTER PROCEDURE [dbo].[A11]
AS
BEGIN
  --Drop FK constraints
ALTER TABLE SalesFactTable
DROP CONSTRAINT FK_SALESFACTTABLE
    --Drop PK constraints
ALTER TABLE SalesFactTable
DROP CONSTRAINT PK_SALESFACTTABLE

ALTER TABLE TimeDim
DROP CONSTRAINT PK_TIMEDIM

ALTER TABLE CustomerDim
DROP CONSTRAINT PK_CUSTOMERDIM

ALTER TABLE PartDim
DROP CONSTRAINT PK_PARTDIM

--Truncate tables
TRUNCATE TABLE TimeDim
TRUNCATE TABLE CustomerDim
TRUNCATE TABLE PartDim
TRUNCATE TABLE SalesFactTable

--Add constraints
ALTER TABLE TimeDim
ADD CONSTRAINT PK_TIMEDIM PRIMARY KEY (TIME_ID)

ALTER TABLE CustomerDim
ADD CONSTRAINT PK_CUSTOMERDIM PRIMARY KEY (CUST_ID)

ALTER TABLE PartDim
ADD CONSTRAINT PK_PARTDIM PRIMARY KEY (PART_ID)

ALTER TABLE SalesFactTable
ADD CONSTRAINT FK_SALESFACTTABLE FOREIGN KEY (TIME_ID) REFERENCES TimeDim (TIME_ID),
FOREIGN KEY (CUST_ID) REFERENCES CustomerDim (CUST_ID),
FOREIGN KEY (PART_ID) REFERENCES PartDim (PART_ID)

ALTER TABLE SalesFactTable
ADD CONSTRAINT PK_SALESFACTTABLE PRIMARY KEY (TIME_ID, CUST_ID, PART_ID)    
Другие вопросы по тегам