Я создал таблицу с именем «Даты», а также вставил значение из другой таблицы. Вы можете увидеть, как выглядят строки кода ниже
--Create table
CREATE TABLE [dimension].[Dates](
[Year] [int] NOT NULL,
[Month] [tinyint] NOT NULL,
[MonthName] [varchar](10) NOT NULL,
[Quarter] [tinyint] NOT NULL,
[MMYYYY] [char](6) NOT NULL
CONSTRAINT [PK_Dates] PRIMARY KEY CLUSTERED (MMYYYY ASC))
--Insert data
INSERT INTO [dimension].[Dates] ([Year],[Month],[MonthName],[MonthName], [MMYYYY])
SELECT DISTINCT [Year],[Month],[MonthName]0,[MonthName], [MMYYYY]
FROM [dimension].[Date]
Кроме того, я назначаю внешний ключ на FACT.FactTable первичным ключом этой таблицы с помощью этой строки кода.
ALTER TABLE FACT.FactTable
ADD
FOREIGN KEY (MMYYYY) REFERENCES [DIMENSION].[Dates] (MMYYYY)
Все идет нормально. Но знайте, что я хочу удалить эту таблицу и сделать ее снова с дополнительными столбцами. Для этого я использую эту команду ниже, но не могу работать.
ALTER TABLE DIMENSION.Dates
DROP CONSTRAINT [PK_Dates]
Msg 3725, Level 16, State 0, Line 183
The constraint 'PK_Dates' is being referenced by table 'FactTable', foreign key constraint 'FK__FactTable__MMYYY__33F4B129'.
Msg 3727, Level 16, State 0, Line 183
Could not drop constraint. See previous errors.
Поскольку эта строка у меня не работает, я могу использовать команду drop table для удаления этой таблицы, так что может ли кто-нибудь помочь мне решить эту проблему?
Вы не можете DROP
таблицу, если есть другие таблицы, которые ссылаются на вашу dimension.Dates
таблицу, или в другом случае вы не можете DELETE
данные, если есть другие таблицы, данные которых ссылаются на данные в таблице FACT.FactTable
. Вы должны сначала бросить CONSTRAINT
, а затем бросить стол.
ALTER TABLE FACT.FactTable DROP CONSTRAINT FK__FactTable__MMYYY__33F4B129;
После того, как ограничение снято и у вас нет других ссылок на dimention.Dates
, вы можете выполнить следующий оператор:
DROP TABLE dimension.Dates;
В сообщении об ошибке говорится, что внешняя таблица FACT.FactTable зависит от PK_Dates. Бросайте это первым. Не похоже, что вы можете изменить его, быстро прочитав документацию.
Почему бы сначала не удалить ссылочные данные, а затем удалить вашу таблицу?