SQLite 关键字

SQLite 不支持 ALTER TABLE 或 DROP 语句从表中删除现有的 DEFAULT 约束。为此,可以使用以下步骤:

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

例如,考虑一个名为 Employee 的表,它是使用以下结构创建的:

CREATE TABLE Employee (
  EmpID INT NOT NULL,
  Name VARCHAR(255),
  City VARCHAR(100) DEFAULT 'London',
  Age INT,
  Salary DECIMAL(18,2)
); 

从 Employee删除City列 DEFAULT 约束,可以使用如下语句:

PRAGMA foreign_keys=off;

BEGIN TRANSACTION;

ALTER TABLE Employee RENAME TO Employee_old;

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

INSERT INTO Employee SELECT * FROM Employee_old;

COMMIT;

PRAGMA foreign_keys=on;