在删除之前我一直在检查是否存在外键:
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
,但如果我不知道我正在删除什么类型的约束我应该使用前一种方法。它是否正确?我错过了任何重要的差异吗?
答案 0 :(得分:4)
如果您只使用MS SQL服务器,我建议您使用sys schema中的视图,因为您可以获得更多信息。 sys模式由MS SQL定义。您可以获得MS SQL特定的各种信息,并且在其他DBMS中没有对应的信息。
如果您担心可移植性,如果您想要遵守其他数据库,请使用INFORMATION_SCHEMA,因为这是跨数据库ISO标准。声称支持此标准的数据库必须以相同方式返回数据。因此这种方法有局限性。