sql-server - 删除约束和表
问题描述
我创建了名为 Dates 的表,还从其他表中插入了值。你可以看看下面的代码行
--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
如果有其他表的数据引用了 table 中的数据,则您无法获取数据FACT.FactTable
。您应该先删除CONSTRAINT
然后删除表。
ALTER TABLE FACT.FactTable DROP CONSTRAINT FK__FactTable__MMYYY__33F4B129;
一旦约束被删除并且您没有任何其他引用,dimention.Dates
您可以执行以下语句:
DROP TABLE dimension.Dates;
推荐阅读
- javascript - 滚动事件不起作用:不推荐使用主线程上的同步 XMLHttpRequest
- sql - 将列表拆分为表格并将其关联
- sql-server - 更新同一个表时触发插入第二行
- javascript - 你怎么能在多个表单中使用相同的隐藏输入?
- python - 安装 pygeocoder 时不兼容(冲突)
- corda - PostgreSQL如何查询某个账户的余额?
- python - 当用户输入 0 时,如何让我的程序打印并继续而不是崩溃?
- python - 从记录类型中获取特定值的数量
- xcode - Mac Catalina 安装 Xdebug
- github - 查看所有 GitHub 存储库中所有打开的拉取请求的搜索过滤器是什么