首页 文章

如何使用SQL在MS Access中使用'DROP'和unamed relationship / constraint?

提问于
浏览
4

我有一个Microsoft Access数据库,我有两个表 . Table1有一个主键,Table2有一个引用Table1主键的外键 . 可以在MS Access的“关系”查看器中设置和查看此关系,选中“强制参照完整性”复选框,并且“连接”类型是内部联接 . 关系是:

[表1] - 1 --------- N - [表2]

我需要能够通过SQL'DROP'这种关系/约束 . 我该怎么做呢?我没有这个关系/约束的名称,因为它是在Access中手动设置的,而不是SQL . 有办法做我需要做的事吗?

4 回答

  • 0

    确定使用的关系

    SELECT szRelationship FROM Msysrelationships WHERE szObject ='childtablename'和szReferencedObject ='parenttablename'

    然后

    使用ALTER TABLE命令 . 沿着这条路线的东西

    ALTER TABLE Table2 DROP CONSTRAINT Relation1

  • 1

    要删除以GUID命名的关系,因为在关系窗口中创建的关系已命名,您需要使用方括号,如下所示:

    ALTER TABLE TableName 
    DROP CONSTRAINT [{0992AADA-3921-4AC0-8E95-745A87709D91}]
    

    使用系统表MsysRelationships找到关系的名称并不困难,列是:

    ccolumn
    grbit
    icolumn 
    szColumn    
    szObject    
    szReferencedColumn  
    szReferencedObject  
    szRelationship
    

    在您的情况下,名称将是GUID,例如

    您还可以使用VBA和ADO模式列出关系 .

    如果您想说出可以使用的内容,建议使用合适的方法来获取名称会更容易 .

    在VBA编辑

    Sub ListRelations()
    Dim rel As DAO.Relation
    
    For Each rel In CurrentDb.Relations
        Debug.Print rel.Name
        Debug.Print rel.ForeignTable
        Debug.Print rel.Table
        For Each fld In rel.Fields
            Debug.Print fld.Name
        Next
    Next
    End Sub
    
  • 3

    如果您可以在关系查看器中看到它,则可以单击它并从那里删除它 .

  • 7

    在Visual Studio Server Explorer中探索表我能够选择未命名的约束并将其删除(如@Beth建议的那样) . 值得注意的是,VS生成的脚本带有它的名字:

    GO
    ALTER TABLE [dbo].[Organizations] DROP CONSTRAINT [FK__OrgDes__Langu__20C1E124];
    

相关问题