0

我正在使用 APACHE DERBY 数据库,并将我的数据库交互基于 EntityManager,并且我不想使用 JDBC 类来构建查询来更改我的表的名称(我只需要为每个新用户添加一个前缀到应用程序,但具有相同的表结构),例如:

//em stands for EntityManager object
Query tableNamesQuery= em.createNamedQuery("RENAME TABLE SCHEMA.EMP_ACT TO EMPLOYEE_ACT");
em.executeUpdate();
// ... rest of the function's work
// The command works from the database command prompt but i don't know how to use it in a program
//Or as i know you can't change system tables data, but here's the code
Query tableNamesQuery= em.createNamedQuery("UPDATE SYS.SYSTABLES SET TABLENAME='NEW_TABLE_NAME' WHERE TABLETYPE='T'");
em.executeUpdate();
// ... rest of the function's work

我的问题是:

  • 这个语法正确吗?
  • 它会起作用吗?
  • 还有其他选择吗?
  • 我是否应该只使用 SYS.SYSTABLES 并找到所有具有“T”作为表类型的表并更改它们的名称,它会更改访问名称吗?
4

1 回答 1

0

我认为您正在寻找 RENAME TABLE 语句:http ://db.apache.org/derby/docs/10.10/ref/rrefsqljrenametablestatement.html

不要只针对系统目录发布更新语句,您将损坏您的数据库。

于 2013-09-30T18:19:28.890 回答