如何使用SQL重命名MS Access表与关系?

时间:2017-07-27 01:41:18

标签: sql .net ms-access

我从外部.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中的关系以指向已创建的新表,以便可以删除旧表?

2 个答案:

答案 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);