Mik*_*ebb 4 sql ms-access constraints
我有一个Microsoft Access数据库,我有两个表.Table1有一个主键,Table2有一个引用Table1主键的外键.可以在MS Access的"关系"查看器中设置和查看此关系,选中"强制参照完整性"复选框,并且"连接"类型是内部联接.关系是:
[表1] - 1 --------- N - [表2]
我需要能够通过SQL'DROP'这种关系/约束.我该怎么做呢?我没有这个关系/约束的名称,因为它是在Access中手动设置的,而不是SQL.有办法做我需要做的事吗?
确定使用的关系
SELECT szRelationship FROM Msysrelationships WHERE szObject ='childtablename'和szReferencedObject ='parenttablename'
然后
使用ALTER TABLE命令.沿着这条路线的东西
ALTER TABLE表2 DROP CONSTRAINT Relation1
要删除使用 GUID 命名的关系(因为在关系窗口中创建的关系已命名),您需要使用方括号,如下所示:
ALTER TABLE TableName
DROP CONSTRAINT [{0992AADA-3921-4AC0-8E95-745A87709D91}]
Run Code Online (Sandbox Code Playgroud)
使用系统表 MsysRelationships 查找关系的名称并不太困难,列是:
ccolumn
grbit
icolumn
szColumn
szObject
szReferencedColumn
szReferencedObject
szRelationship
Run Code Online (Sandbox Code Playgroud)
在您的情况下,该名称将是一个 GUID,例如 {A869FC34-81AF-4D29-B81D-74180BF73025}
您还可以使用 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5492 次 |
| 最近记录: |