sql - 如何在 SQL Server 中无约束地删除外键?
问题描述
我已经引用了我NotificaionSourceId
的帮助表 ID,但我需要删除它,因为我不再想引用这两列,但我不确定如何删除引用,所以如果我能得到任何帮助或建议将是真的赞赏。
ALTER TABLE [dbo].[Notification] WITH CHECK
ADD FOREIGN KEY([NotificationSourceId])
REFERENCES [dbo].[Help]([Id])
我看到很多人这样做
ALTER TABLE [dbo].[company]
DROP CONSTRAINT [Company_CountryID_FK]
但我没有 FK 键,所以我迷路了。
解决方案
使用下面的查询来查找您的 FK 名称:
SELECT
FK_Table = FK.TABLE_NAME,
FK_Column = CU.COLUMN_NAME,
PK_Table = PK.TABLE_NAME,
PK_Column = PT.COLUMN_NAME,
Constraint_Name = C.CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK
ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK
ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU
ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
INNER JOIN (
SELECT
i1.TABLE_NAME,
i2.COLUMN_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2
ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
WHERE
i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
) PT
ON PT.TABLE_NAME = PK.TABLE_NAME
然后使用:
ALTER TABLE [dbo].[company] DROP CONSTRAINT [Constraint_Name]
推荐阅读
- sql - 如何在 Rails 5 中使用 join 工作?
- django-rest-framework - django_filter 中的“列表中的字符串”等价物是什么?
- python - 精度和召回率 1
- python - Python-Lex-Yacc 符号无法访问
- android - 使用 Google 的 ClassyTaxiJava 示例应用注册 Android 订阅时出错
- c# - 附加到 csv 文件(csv 助手)会在 csv 文件中提供重复的条目
- python - 替换 CSV 文件中用户输入的字符串(重写文件)
- javascript - TypeScript 不喜欢 HTMLHeadingElement | 空赋值
- react-native - 如何使用模态仅获得一个值
- javascript - Vue路由器在路线上保存滚动位置并在导航时返回该位置?