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

y0u0uwnf  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(131)

我有一个可以用下面的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定义这个精确的模型?
1.如果不可能,有什么变通方法?

7ajki6be

7ajki6be1#

到2023年,这是不可能的:
检查约束当前不包括在生成的Prisma模式中-但是,底层数据库仍然强制执行约束。https://www.prisma.io/docs/guides/other/advanced-database-tasks/data-validation/postgresql#2-adding-a-table-with-a-single-check-constraint-on-a-single-column
您必须创建自定义迁移:https://www.prisma.io/docs/guides/migrate/developing-with-prisma-migrate/customizing-migrations
支持CHECK的未决问题:https://github.com/prisma/prisma/issues/3388

相关问题