Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何删除具有约束的表,而不删除子表?_Sql Server_Sql Server 2008_Foreign Key Relationship - Fatal编程技术网

Sql server 如何删除具有约束的表,而不删除子表?

Sql server 如何删除具有约束的表,而不删除子表?,sql-server,sql-server-2008,foreign-key-relationship,Sql Server,Sql Server 2008,Foreign Key Relationship,我有60张桌子,我想去掉其中的10张。但是,在删除这些10时,它显示了FK约束错误。有没有办法通过禁用约束删除这些表而不删除其他表 我还截断了引用表中的所有数据,仍然显示FK约束错误 我的目标是删除一个表,而不删除这些表中的其他FK表。使用此SQL语句,您可以列出引用给定表的所有FK约束,并且我还提供了SQL命令来删除引用您的表的FK约束 表: 因此,将您想要放入@TableName变量的10个表中的一个放入其中,然后运行此操作。您应该会得到一个输出,显示引用该表的所有FK约束,包括一个包含AL

我有60张桌子,我想去掉其中的10张。但是,在删除这些10时,它显示了FK约束错误。有没有办法通过禁用约束删除这些表而不删除其他表

我还截断了引用表中的所有数据,仍然显示FK约束错误


我的目标是删除一个表,而不删除这些表中的其他FK表。

使用此SQL语句,您可以列出引用给定表的所有FK约束,并且我还提供了SQL命令来删除引用您的表的FK约束 表:


因此,将您想要放入
@TableName
变量的10个表中的一个放入其中,然后运行此操作。您应该会得到一个输出,显示引用该表的所有FK约束,包括一个包含
ALTER table….的列。。。。DROP CONSTRAINT…
命令从系统中删除该约束(仅删除约束!而不是另一个表)。

使用此SQL语句,您可以列出引用给定表的所有FK约束,并且我还提供了SQL命令来删除引用您的表的FK约束 表:


因此,将您想要放入
@TableName
变量的10个表中的一个放入其中,然后运行此操作。您应该会得到一个输出,显示引用该表的所有FK约束,包括一个包含
ALTER table….的列。。。。DROP CONSTRAINT…
命令,用于从系统中删除该约束(仅删除约束!而不是另一个表)。

您不需要删除“其他”表-您只需删除存在于要删除的表中的外键约束。我的表正被许多表引用为FK,所以我是否需要删除所有这些表的foregin键约束?是的,您确实需要这样做。查看我的回答您不需要删除“其他”表-您只需要删除存在于您要删除的表中的外键约束。我的表被许多表引用为FK,所以我是否需要删除所有这些表的外键约束?是的,您确实需要这样做。看看我的回答
DECLARE @TableName SYSNAME
SET @TableName = 'dbo.YourTableNameHere'

;WITH ReferencingFK AS 
(
    SELECT 
        fk.Name AS 'FKName',
        OBJECT_NAME(fk.parent_object_id) 'ParentTable',
        cpa.name 'ParentColumnName',
        OBJECT_NAME(fk.referenced_object_id) 'ReferencedTable',
        cref.name 'ReferencedColumnName'
    FROM 
        sys.foreign_keys fk
    INNER JOIN 
        sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
    INNER JOIN 
        sys.columns cpa ON fkc.parent_object_id = cpa.object_id AND fkc.parent_column_id = cpa.column_id
    INNER JOIN 
        sys.columns cref ON fkc.referenced_object_id = cref.object_id AND fkc.referenced_column_id = cref.column_id
)
SELECT 
    FKName,
    ParentTable,
    ParentColumnName,
    ReferencedTable,
    ReferencedColumnName,
    DropCmd = 'ALTER TABLE dbo.' + ParentTable + ' DROP CONSTRAINT [' + FKName + ']'
FROM 
    ReferencingFK
WHERE
    ReferencedTable = @TableName
ORDER BY 
    ParentTable, ReferencedTable, FKName