我从外部.Net应用程序连接到MS Access数据库。我需要使用SQL来升级数据库的模式。部分升级需要重命名作为1对多关系一部分的表。
据我所知,使用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中的关系以指向已创建的新表,以便可以删除旧表?
答案 0 :(得分:1)
您可以通过简单地使用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:\Users\Public\Database1.accdb");
TableDef tbd = db.TableDefs["OldTableName"];
tbd.Name = "NewTableName";
db.Close();
}
}
}
.NET项目将需要Access DAO的COM引用。我用过的那个是
Microsoft Office 14.0 Access数据库引擎对象库
答案 1 :(得分:0)
您应首先删除外键约束。如何使用SQL查看,例如here。然后创建新约束:
alter table City
add constraint FK_City_REF_States foreign key (ID_State)
references States (ID_State);