索引与约束
约束
SQL 约束是强加于表列的规则。它们用于防止无效数据被输入数据库。
这确保了数据库中数据的准确性和可靠性。
默认值
DEFAULT
子句指定如果用户在进行 INSERT
时未提供值,则使用该列的默认值。
如果列定义没有附加显式的 DEFAULT
子句,
则该列的默认值为 NULL
。
显式的 DEFAULT
子句可以指定默认值为 NULL
,
字符串常量,BLOB 常量,带符号数字或任何用括号括起来的常量表达式。
非空
默认情况下,一个列可以包含 NULL 值。NOT NULL
约束强制一个列 不 接受 NULL 值。
这强制字段始终包含一个值,这意味着您不能插入新记录,
或在没有为该字段添加值的情况下更新记录。
唯一
UNIQUE
约束确保列中的所有值均不同。
UNIQUE
和 PRIMARY KEY
约束为列或列集提供了唯一性保证。
PRIMARY KEY
约束自动具有 UNIQUE
约束。
每个表可以有多个 UNIQUE
约束,但每个表只能有一个 PRIMARY KEY
约束。
检查
CHECK
约束用于限制可以放入列的值范围。
如果您在列上定义了 CHECK
约束,则仅允许此列的某些值。
如果您在表上定义了 CHECK
约束,则可以根据行中其他列的值限制某些列中的值。
主键
PRIMARY KEY
约束唯一标识表中的每条记录。
主键必须包含 UNIQUE
值,并且不能包含 NULL
值。
一个表只能有 一个 主键;在表中,该主键可以由单个列或多个列(字段)组成。
复合主键
与 PRIMARY KEY
相似,复合主键使用多个字段唯一标识表中的每条记录。
Drizzle ORM 提供一个独立的 primaryKey
操作符来实现这一点:
外键
FOREIGN KEY
约束用于防止会破坏表之间链接的操作。
FOREIGN KEY
是一个表中的字段(或字段集合),它引用了另一个表中的 PRIMARY KEY
。
带有外键的表称为子表,带有主键的表称为引用表或父表。
Drizzle ORM 提供多种声明外键的方法。
您可以在列声明语句中声明它们:
如果您想进行自我引用,由于 TypeScript 的限制,
您将必须显式设置引用回调的返回类型或使用独立的 foreignKey
操作符。
要声明多列外键,可以使用专用的 foreignKey
操作符:
索引
Drizzle ORM 提供 index
和 unique index
声明的 API:
IMPORTANT
对于版本低于 drizzle-kit@0.22.0
和 drizzle-orm@0.31.0
的情况,drizzle-kit
只支持索引 name
和 on()
参数。
在 drizzle-kit@0.22.0
和 drizzle-orm@0.31.0
版本之后,所有字段均得到支持!
从 0.31.0 开始,Drizzle ORM 的新索引 API 提供了创建索引的所有参数集:
IMPORTANT
目前 drizzle-kit
仅支持索引 name
和 on()
参数。
Drizzle ORM 提供创建索引的所有参数集:
Drizzle ORM 提供创建索引的所有参数集: