是否可以在Prisma模型中使用CHECK验证



我有一个可以用这个SQL代码创建的表

CREATE TABLE IF NOT EXISTS "user" (
id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name username NOT NULL,
email email NOT NULL,
password text NOT NULL,
email_verified bool NOT NULL DEFAULT false,
verify_email_code text,
verify_email_code_exp_date TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
CHECK (length(name) >= 3),
CONSTRAINT unique_user_name UNIQUE (name),
CHECK (length(email) >= 3),
CONSTRAINT unique_user_email UNIQUE (email)
);

在这里,我检查nameemail的长度,如果其中任何一个的长度小于3个字符,则整个数据将被拒绝。

  1. 如何用Prisma定义这个精确的模型
  2. 如果不可能,有什么解决办法

截至2023年,这是不可能的:

Check约束当前未包含在生成的Prisma架构中,但是底层数据库仍然强制执行这些约束。https://www.prisma.io/docs/guides/other/advanced-database-tasks/data-validation/postgresql#2-添加一个带有单检查的表-限制-单列

您必须创建一个自定义迁移:https://www.prisma.io/docs/guides/migrate/developing-with-prisma-migrate/customizing-migrations

支持CHECK的开放问题:https://github.com/prisma/prisma/issues/3388

相关内容

最新更新