SQLite 关键字

SQLite 不支持 ALTER COLUMN 关键字来修改表的现有列。但是,这可以通过以下步骤来实现:

  • 应检查外键约束
  • 将表重命名为其他名称
  • 创建一个结构相同但修改列的新表
  • 将重命名表中的数据复制到新表
  • 最后开启外键约束

示例:

考虑一个名为 Employee 的数据库表,其结构如下:

cidNameTypenotnulldflt_valuepk
0EmpIDINT11
1NameVARCHAR(255)10
2CityVARCHAR(100)00
3AgeINT00
4SalaryDECIMAL(18,2)00

在上面的例子中,Age列的数据类型是INT。要将列的数据类型更改为 DOUBLE,可以使用以下语句:

PRAGMA foreign_keys=off;

BEGIN TRANSACTION;

ALTER TABLE Employee RENAME TO Employee_old;

CREATE TABLE Employee (
  EmpID INT,
  Name VARCHAR(255),
  City VARCHAR(100),
  Age DOUBLE,
  Salary DECIMAL(18,2)
);

INSERT INTO Employee SELECT * FROM Employee_old;

COMMIT;

PRAGMA foreign_keys=on; 

这会将 Age 列的数据类型从 INT 更改为 DOUBLE。