0

1つのテーブルを2つに分割して、データベースをリファクタリングしたいと思います。いくつかの既存の列を新しいテーブルに移動したいと思います。たとえば、以下のテーブルのフィールドhome_addressとフィールドを新しいテーブルに移動するとします。work_addressEmployeeAddress

sqliteを使用してこれをどのように達成できますか?

前:

Employee Table
   employee_id (Primary)
   name
   home_address
   home_city
   work_address
   work_city

後:

Employee Table
   employee_id (Primary)
   name
   home_address_id
   work_address_id

Address Table
   address_id (Primary)
   address
   city
4

1 に答える 1

1

移行は、追加のロジックなどを使用せずに、シンプルでわかりやすいものにすることをお勧めします。少なくとも1回程度しか実行しない場合は、移行を行ってください。

したがって、最初にmax(employee_id)を確認します。以下では、max(employee_id)が10000未満(整数)であると想定しています。

create table employee_new(employee_id,name,home_address_id,work_address_id);
insert into employee_new select employee_id,name,employee_id,employee_id+10000 from employee;
create table address(address_id,address,city);
insert into address select employee_id,home_address,home_city from employee; 
insert into address select employee_id+10000,work_address,work_city from employee; 
alter table employee rename to employee_old;
alter table employee_new rename to employee;
于 2012-09-01T19:43:19.153 に答える