如何使用SQL重命名具有关系的MS Access表?



我正在从外部 .Net 应用程序连接到 MS Access 数据库。我需要使用 SQL 来升级数据库的架构。升级的一部分需要重命名属于一对多关系的表。

我知道实际上不可能使用 SQL 重命名 MS Access 中的表。我的研究使我找到了以下解决方案。

SELECT * INTO OldTableName FROM NewTableName
DROP TABLE OldTableName

这似乎适用于不属于关系的表。但是,如果表属于关系,则在运行 DROP TABLE SQL 时,我会收到以下异常。

Cannot delete this index or table.  It is either the current index or is used in a relationship.

有没有办法通过SQL更新MS Access中的关系以指向已创建的新表,以便可以删除旧表?

您可以通过简单地使用 Access DAO 重命名表来节省一些悲伤:

using Microsoft.Office.Interop.Access.Dao;
namespace AccessDaoConsoleApp
{
class Program
{
static void Main(string[] args)
{
var dbe = new DBEngine();
Database db = dbe.OpenDatabase(@"C:UsersPublicDatabase1.accdb");
TableDef tbd = db.TableDefs["OldTableName"];
tbd.Name = "NewTableName";
db.Close();
}
}
}

.NET 项目将需要 Access DAO 的 COM 引用。我用的那个是

Microsoft Office 14.0 访问数据库引擎对象库

您应该先删除外键约束。如何使用SQL执行此操作,例如您可以在此处看到。然后创建新约束:

alter table City
add constraint FK_City_REF_States foreign key (ID_State)
references States (ID_State);

最新更新