我们对所有这些类型提供原生支持,如果这还不足以满足你的需求,请随意创建 自定义类型。
important
本部分文档中的所有示例不使用数据库列名别名,列名是根据 TypeScript 键生成的。
如果你想,可以在列名中使用数据库别名,也可以使用 casing
参数为 Drizzle 定义映射策略。
你可以在 这里 阅读更多信息。
整数
一个有符号整数,存储在 0
、1
、2
、3
、4
、6
或 8
字节中,具体取决于值的大小。
tinyint
smallint
mediumint
bigint
我们省略了 bigint(M)
中的 M
配置,因为它表示数字类型的显示宽度。
---
real
decimal
double
float
---
serial
SERIAL
是 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
的别名。
---
binary
varbinary
---
char
varchar
你可以定义 { enum: ["value1", "value2"] }
配置来推断 insert
和 select
类型,但它 不会 检查运行时的值。
text
你可以定义 { enum: ["value1", "value2"] }
配置来推断 insert
和 select
类型,但它 不会 检查运行时的值。
---
boolean
---
date
datetime
time
year
timestamp
---
json
你可以指定 .$type<..>()
进行 json 对象推断,它 不会 检查运行时值。
它在编译时提供默认值、插入和选择模式的保护。
---
enum
---
自定义数据类型
每个列构建器都有一个 .$type()
方法,允许你自定义列的数据类型。这在处理未知或品牌类型时非常有用。
非空
NOT NULL
约束规定相关联的列不能包含 NULL
值。
默认值
DEFAULT
子句指定在用户进行
INSERT
时如果不显式提供值,则使用的列的默认值。
如果没有显式的 DEFAULT
子句附加到列定义,
则列的默认值为 NULL
。
一个显式的 DEFAULT
子句可以指定默认值为 NULL
、
字符串常量、blob 常量、有符号数字或任何用括号括起来的常量表达式。
使用 $default()
或 $defaultFn()
时,它们只是同一函数的不同别名,
你可以在运行时生成默认值,并在所有插入查询中使用这些值。
这些函数可以帮助你利用各种实现,例如 uuid
、cuid
、cuid2
等等。
注意:该值不会影响 drizzle-kit
行为,仅在 drizzle-orm
的运行时使用。
使用 $onUpdate()
或 $onUpdateFn()
时,它们也是同一函数的不同别名,
你可以在运行时生成默认值,并在所有更新查询中使用这些值。
向列添加动态更新值。当更新行时将调用该函数,
如果没有提供值,则返回的值将用作列值。
如果未提供默认值(或 $defaultFn),则在插入行时也将调用该函数,
并且返回的值将用作列值。
注意:该值不会影响 drizzle-kit
行为,仅在 drizzle-orm
的运行时使用。
主键
自增