MS SQL ServerСтолбцы таблицы A ссылаются на FK таблицы B. Не удается отказаться от таблицы A PK
Я делаю звездную схему. Я установил PK's
и FK
для моих таблиц, и теперь я пытаюсь написать процедуру, которая выведет ограничения, обрезает таблицы, снова добавит ограничения и затем повторно запишет таблицы. Когда я пытаюсь отказаться от ограничений, я получаю ошибку:
«Ограничение PK_TIMEDIM
в настоящее время ссылается таблицей SalesFactTable
, ограничение внешнего ключа FK_SALESFACTTABLE
Не удалось удалить ограничение.»
EDIT: Одна проблема решена. Другой найден. Я получаю ту же ошибку, кроме как сейчас есть таинственные, автогенерируемые 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)
Ну, ПК, вероятно, является первичным ключом, и есть ограничения внешних ключей, ссылающихся его. Вам нужно будет изменить порядок, чтобы сначала скрыть ограничения внешнего ключа? – StuartLC
Это сработало. Спасибо! Я постараюсь вспомнить, что порядок важен в будущем. – Chiharu