gpt4 book ai didi

sql - 我应该使用 information_schema.referential_constraints 还是 sys.foreign_keys 来检查 key 的存在?

转载 作者:行者123 更新时间:2023-12-04 19:19:44 24 4
gpt4 key购买 nike

在删除之前,我一直在检查外键是否存在,如下所示:

IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
WHERE CONSTRAINT_NAME ='FK_Table1_Table2')
ALTER TABLE dbo.Table1
DROP CONSTRAINT FK_Table1_Table2

然后我突然想到有一个 sys.foreign_keys表也​​保存了这些信息,现在我不确定哪个是最好的。

我的猜测是,如果我知道我只会删除 FK,那么我应该使用 sys.foreign_keys ,但如果我不知道我要放弃什么类型的约束,我应该使用前一种方法。这样对吗?我是否遗漏了任何重要的差异?

最佳答案

如果您只使用 MS SQL 服务器,我建议使用来自 sys 架构的 View ,因为您可以获得更多信息。 sys 架构由 MS SQL 定义。您可以获得各种特定于 MS SQL 且在其他 DBMS 中没有对应信息的信息。

如果您关心可移植性,如果您想遵守其他数据库,请使用 INFORMATION_SCHEMA,因为这是跨数据库 ISO 标准。任何声称支持此标准的数据库都必须以相同的方式返回数据。因此这种方法有局限性。

关于sql - 我应该使用 information_schema.referential_constraints 还是 sys.foreign_keys 来检查 key 的存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6100280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com