相关疑难解决方法(0)

SQL DROP TABLE外键约束

如果我想像这样删除我的数据库中的所有表,它会处理外键约束吗?如果没有,我该如何处理?

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]
Run Code Online (Sandbox Code Playgroud)

sql-server constraints foreign-keys drop-table database-table

141
推荐指数
4
解决办法
29万
查看次数

删除表中的所有约束

我试图编写用于删除约束的脚本.

我有以下函数来选择我的DataBase中的Constarints

SELECT  name
    FROM sys.foreign_keys
Run Code Online (Sandbox Code Playgroud)

我使用上面的脚本编写了alter scripts

SELECT 
    'ALTER TABLE ' + OBJECT_NAME(parent_object_id) + 
    ' DROP CONSTRAINT ' + name
FROM sys.foreign_keys
Run Code Online (Sandbox Code Playgroud)

使用上面的查询我如何执行这些约束?

我可以用DROP DATABASE DBName.但我只是试图通过删除约束来删除表.

是不是可以不去SP?或者我可以采取哪些简单方法?

constraints sql-server-2008

17
推荐指数
3
解决办法
6万
查看次数

T-SQL:DROP表级联约束相当吗?

在oracle中,我可以发出DROP TABLE ...级联约束,它不会抱怨FK等.

在T-SQL中是否有等价物?

t-sql cascade

7
推荐指数
2
解决办法
7014
查看次数

是否有一种更简单,更快捷的方法删除具有对其他表的外键引用的表?

我有一个新表,该表具有对许多现有表的外键引用。首次创建新表时,我通过以下方式创建外键:

ALTER TABLE [dbo].[NewTable] WITH CHECK ADD FOREIGN KEY([SectionDatabaseID])
REFERENCES [dbo].[Section] ([SectionDatabaseID])

ALTER TABLE [dbo].[NewTable] WITH CHECK ADD FOREIGN KEY([TermDatabaseID])
REFERENCES [dbo].[Term] ([TermDatabaseID])
Run Code Online (Sandbox Code Playgroud)

上面的方法将使用它自己的自动命名约定为外键约束生成名称。

但是,我想删除新表,因为我需要通过从头开始创建表来进行一些重大修改。

显然,如果我仅执行drop语句,SQL Server数据库将抱怨说新表具有对其他表的外键引用。

我听说过运行以下脚本来找出存在哪些外键,以便我们可以删除它们:

use perls;
SELECT 'ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME +
'] DROP CONSTRAINT [' + CONSTRAINT_NAME + ']'
FROM information_schema.table_constraints
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY' and TABLE_NAME = 'NewTable'
Run Code Online (Sandbox Code Playgroud)

上面给出的结果基本上显示了我需要运行的alter语句。

我需要更自动化的东西。为什么我必须分别删除每个外键约束,然后才能删除表?

我想以一种更简单的方式删除表格。它比我上面要做的要容易。

sql t-sql sql-server foreign-keys sql-drop

5
推荐指数
1
解决办法
3176
查看次数