我有一个可以用下面的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)
);
这里我检查name
和email
的长度,如果其中任何一个的长度小于3个字符-整个数据将被拒绝。
1.如何使用Prisma定义这个精确的模型?
1.如果不可能,有什么变通方法?
1条答案
按热度按时间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