You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite建表时如何为单个外键同时配置多个约束?

SQLite合并外键约束实现方案

你只需要将ON DELETE CASCADE属性和原有延迟约束属性合并到同一个外键定义语句中即可,二者属于同一外键的不同配置项,无需拆分定义。

合并后的完整外键约束写法

CONSTRAINT "model" FOREIGN KEY("category_id") REFERENCES "category"("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED

完整表重建操作步骤

SQLite修改表约束必须通过重建表实现,操作流程如下:

  • 首先开启事务并临时关闭外键检查,避免操作过程中触发校验报错:
    PRAGMA foreign_keys = OFF;
    BEGIN TRANSACTION;
    
  • 按照调整后的约束创建新表,示例:
    CREATE TABLE your_table_new (
      -- 此处填写你原表的其余字段定义
      category_id INTEGER,
      CONSTRAINT "model" FOREIGN KEY("category_id") REFERENCES "category"("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED
    );
    
  • 导入原表数据到新表:
    INSERT INTO your_table_new SELECT * FROM your_table;
    
  • 删除原表,重命名新表为原表名称:
    DROP TABLE your_table;
    ALTER TABLE your_table_new RENAME TO your_table;
    
  • 最后提交事务并重新开启外键检查:
    COMMIT;
    PRAGMA foreign_keys = ON;
    

注意:操作前请务必备份原表数据,避免操作失误导致数据丢失。

内容的提问来源于stack exchange,提问作者Peter Lakatos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:24:04