将主键从字符串更改为数字的最简单方法

时间:2012-11-21 19:40:17

标签: database oracle entity-framework schema

我正在处理的数据库最初是原型(由其他人),所有主键(和相关的外键)都是字符串。键确实需要是数字。

数据库有16个表,其中包含最少的测试数据。所有数据都在关键字段中有数字。

我最简单的解决方法是什么?

2 个答案:

答案 0 :(得分:1)

不确定“最小测试数据”究竟是什么意思,但您可以使用SQL Developer执行此操作:

  1. 导出表格DDL
  2. 将数据导出为插入语句
  3. 修改1中生成的DDL脚本,将列更新为NUMBER类型
  4. 删除并重新创建架构
  5. 应用3到2的脚本。

答案 1 :(得分:0)

我创建了一个SQL脚本来对单个关联进行更改,然后我将修改并重复20次。

我做了第一个表(MODULES.ID到MODULE_SESSIONS.MODULE_ID关联)并且它有效。 这是我使用的脚本:

alter table MODULE_SESSIONS drop constraint FK_MODULE_MODULE_SESSION_FK1;
alter table MODULES drop constraint MODULES_PK;
alter table MODULES rename column ID to OLD;
alter table MODULES add ID INTEGER;
update MODULES set ID = OLD;
alter table MODULES drop column OLD;
alter table MODULE_SESSIONS rename column MODULE_ID to OLD;
alter table MODULE_SESSIONS add MODULE_ID INTEGER;
update MODULE_SESSIONS set MODULE_ID = OLD;
alter table MODULES add constraint MODULE_PK primary key(ID); 
alter table MODULE_SESSIONS add constraint FK_MODULE_MODULE_SESSION_FK1 foreign key(MODULE_ID) references MODULES(ID);
alter table MODULE_SESSIONS drop column OLD;