我正在尝试使用C ++(基于MFC)(通过ODBC)在以下SQL命令中在两个Microsoft Access表之间添加CONSTRAINT / RELATIONSHIP:
ALTER TABLE [JobSettingsReporting]
ADD CONSTRAINT FK_PerEntry
FOREIGN KEY (JobSetID)
REFERENCES JobSettingsEntry(JobSetID)
ON UPDATE CASCADE
ON DELETE CASCADE
我试着这样做:
CDatabase db;
db.OpenEx(App().GetDBConnectString());
db.ExecuteSQL(strSQL);
db.Close();
其中strSQL是上面的查询。我收到了错误:
Syntax error in CONSTRAINT clause.
似乎问题在于“ON UPDATE CASCADE”和“ON DELETE CASCADE”组件。当我在Microsoft Access中使用查询设计工具(或在VB中)时,我得到相同的错误。
但是,当我在Microsoft Access中的VB中执行以下操作时,它可以工作:
Dim cn As ADODB.Connection 'For action queries
Set cn = CurrentProject.Connection
cn.Execute "ALTER TABLE [JobSettingsReporting]
ADD CONSTRAINT FK_PerEntry
FOREIGN KEY (JobSetID)
REFERENCES JobSettingsEntry(JobSetID)
ON UPDATE CASCADE
ON DELETE CASCADE"
直接使用查询窗口时,此命令似乎也适用于SQL Server Express。
据我所知,我需要使用Jet / ADO在C ++中发出此命令才能使用它,但我找不到语法。我需要以编程方式添加此关系,以便更新所有已部署计算机上的数据库。
任何帮助将不胜感激。