我有一个名为groups的表,我想重命名其中的一列。到目前为止还可以。我知道sqlite不支持重命名列,所以我做了:
ALTER TABLE groups RENAME to tmp_groups;
CREATE TABLE groups(
_ID integer primary key autoincrement,
new_column_name integer
);
INSERT INTO groups(_ID, new_column_name) SELECT _ID, old_column_name FROM tmp_groups;
DROP TABLE tmp_groups;
但是,当我删除表tmp_groups时,具有外键的表membersON DELETE CASCADE
也删除了其记录,因此我必须执行以下操作:
- 创建一个表tmp_members与成员相同的列,并且没有外键;
- 在tmp_members中插入来自成员的记录;
- 删除表成员;
- 运行第一部分的代码(使用组表);
- 使用其外键重新创建表成员;
- 从tmp_members插入成员数据;
伙计,那很累!简单地重命名列的代码太多;
有没有更简单的方法来处理这个约束问题,或者这是“sqlite 方式”?