首页
/ Drizzle ORM 中 SQLite 复合主键与数据类型使用指南

Drizzle ORM 中 SQLite 复合主键与数据类型使用指南

2025-05-06 08:03:59作者:胡易黎Nicole

在使用 Drizzle ORM 进行 SQLite 数据库开发时,复合主键和数据类型的选择是开发者经常遇到的两个重要技术点。本文将详细介绍这两个方面的正确使用方法,帮助开发者避免常见错误。

复合主键的正确声明方式

在 Drizzle ORM 的最新版本中,声明复合主键的语法已经更新。正确的做法是在表定义的第三个参数(回调函数)中,使用 primaryKey 函数并传入包含 columns 属性的对象。

import { integer, primaryKey, sqliteTable } from 'drizzle-orm/sqlite-core';

export const bookAuthors = sqliteTable(
  'book_authors',
  {
    authorId: integer('author_id'),
    bookId: integer('book_id'),
  },
  (t) => ({
    pk: primaryKey({ columns: [t.bookId, t.authorId] }),
  }),
);

这种语法结构清晰明了,columns 数组中可以包含多个列引用,这些列将共同组成复合主键。需要注意的是,早期版本可能有不同的语法,但当前版本必须使用这种标准形式。

SQLite 数据类型的选择

SQLite 采用动态类型系统,与传统的静态类型数据库有所不同。Drizzle ORM 为 SQLite 提供了多种数据类型支持:

  1. 基础类型:包括 integertextreal
  2. 特殊类型:如 blob 用于二进制数据
  3. 类型亲和性numeric 是一种特殊的类型亲和性

numeric 类型亲和性在 SQLite 中具有特殊行为:它会尝试将插入的数据转换为整数或实数,如果转换失败则保留文本形式。虽然这不是严格的数据类型,但在 Drizzle ORM 中仍然可以使用。

最佳实践建议

  1. 对于需要精确计算的数值字段,优先考虑使用 integerreal
  2. 复合主键适用于需要唯一性约束的多列组合场景
  3. 定期检查 Drizzle ORM 文档更新,语法和功能可能会随版本演进
  4. 在迁移现有项目时,注意新版本可能废弃了旧语法

通过掌握这些关键知识点,开发者可以更加高效地使用 Drizzle ORM 构建 SQLite 数据库应用,避免因语法变更或类型误解导致的开发障碍。

登录后查看全文
热门项目推荐
相关项目推荐