Ale*_*lex 4 sql t-sql sql-server foreign-keys
在删除之前,我一直在检查外键是否存在,如下所示:
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_NAME ='FK_Table1_Table2')
ALTER TABLE dbo.Table1
DROP CONSTRAINT FK_Table1_Table2
Run Code Online (Sandbox Code Playgroud)
然后我想到还有一张sys.foreign_keys表也保存了这些信息,现在我不确定哪个是最好的。
我的猜测是,如果我知道我只会删除 FK,那么我应该使用sys.foreign_keys,但是如果我不知道我要删除什么类型的约束,我应该使用前一种方法。这样对吗?我是否遗漏了任何重要的差异?
如果您只使用 MS SQL 服务器,我建议使用来自 sys 架构的视图,因为您可以获得更多信息。sys 架构由 MS SQL 定义。您可以获得各种特定于 MS SQL 且在其他 DBMS 中没有对应信息的信息。
如果您关心可移植性,如果您想遵守其他数据库,请使用 INFORMATION_SCHEMA,因为这是跨数据库 ISO 标准。任何声称支持此标准的数据库都必须以相同的方式返回数据。因此这种方法有局限性。
| 归档时间: |
|
| 查看次数: |
1055 次 |
| 最近记录: |