MS SQL-сервер
Я делаю звездную схему. Я установил 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)