如果我想像这样删除数据库中的所有表,它会处理外键约束吗?如果不是,我该如何处理它呢?
GO
IF OBJECT_ID('dbo.[Course]','U') IS NOT NULL
DROP TABLE dbo.[Course]
GO
IF OBJECT_ID('dbo.[Student]','U') IS NOT NULL
DROP TABLE dbo.[Student]发布于 2009-11-22 01:24:51
不,这不会删除您的表,如果确实有外键引用它。
要获取引用您的表的所有外键关系,您可以使用以下SQL (如果您使用的是SQL Server2005或更高版本):
SELECT *
FROM sys.foreign_keys
WHERE referenced_object_id = object_id('Student')如果有的话,使用下面的语句,您可以创建SQL语句来实际删除这些FK关系:
SELECT
'ALTER TABLE [' + OBJECT_SCHEMA_NAME(parent_object_id) +
'].[' + OBJECT_NAME(parent_object_id) +
'] DROP CONSTRAINT [' + name + ']'
FROM sys.foreign_keys
WHERE referenced_object_id = object_id('Student')发布于 2013-09-11 22:23:21
在SQL Server Management Studio2008 (R2)和更高版本中,可以右击
DB -> Tasks ->生成脚本
<代码>H111将脚本外键设置为真。<代码>H212<代码>H113单击“确定”。<代码>H214<代码>H115单击Next -> Next ->完成。<代码>H216<代码>H117查看脚本,然后执行。<代码>H218<代码>F219
发布于 2009-11-22 01:24:21
如果你先删除“孩子”表,外键也会被删除。如果您首先尝试删除"parent“表,您将得到一个”无法删除对象'a‘,因为它被外键约束引用“。错误。
https://stackoverflow.com/questions/1776079
复制相似问题