乐闻世界logo
搜索文章和话题

SQLite 支持哪些约束类型?

2月18日 21:57

SQLite 的约束机制确保数据的完整性和一致性:

  1. NOT NULL 约束

    • 确保列不接受 NULL 值
    • 插入或更新时如果违反约束会报错
    sql
    CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL );
  2. UNIQUE 约束

    • 确保列中的所有值都是唯一的
    • 可以应用于单列或多列组合
    • 自动创建索引以提高性能
    sql
    CREATE TABLE users ( id INTEGER PRIMARY KEY, email TEXT UNIQUE );
  3. PRIMARY KEY 约束

    • 唯一标识表中的每一行
    • 自动创建 NOT NULL 和 UNIQUE 约束
    • 可以是单列或复合主键
    sql
    CREATE TABLE users ( id INTEGER PRIMARY KEY, username TEXT );
  4. FOREIGN KEY 约束

    • 建立表之间的关系
    • 确保引用的完整性
    • 需要启用外键约束:PRAGMA foreign_keys = ON;
    sql
    CREATE TABLE orders ( id INTEGER PRIMARY KEY, user_id INTEGER, FOREIGN KEY (user_id) REFERENCES users(id) );
  5. CHECK 约束

    • 定义列值必须满足的条件
    • 可以包含复杂的表达式
    sql
    CREATE TABLE products ( id INTEGER PRIMARY KEY, price REAL CHECK(price > 0), quantity INTEGER CHECK(quantity >= 0) );
  6. DEFAULT 约束

    • 为列指定默认值
    • 当插入时未提供值时使用默认值
    sql
    CREATE TABLE users ( id INTEGER PRIMARY KEY, status TEXT DEFAULT 'active', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
  7. 约束冲突处理

    • 使用 ON CONFLICT 子句处理约束冲突
    • 可选值:ROLLBACK、ABORT、FAIL、IGNORE、REPLACE
    sql
    INSERT OR REPLACE INTO users (id, name) VALUES (1, 'John');

合理使用约束可以确保数据质量,防止无效数据的插入和更新。

标签:Sqlite