运行 一次 DML/Update 个使用 Prisma 的脚本

Running one time DML/Update scripts using Prisma

Prisma 是否支持运行自动更新一次性 DML 语句,例如 UPDATE?

例如,假设我们希望 table 中的所有电子邮件均为小写。我们对 API 进行了更改,以便所有未来的 accounts/emails 都是小写的,但是我们希望将现有的电子邮件也更新为小写。

运行 npx prisma generatenpx prisma migrate 执行 DDL 以保持架构同步。但是,我没有看到保存数据库“补丁”文件的地方。这些文件通常 运行 一次,以便更新数据库中的现有记录。

Prisma 不自动支持 运行ning one-time DML 语句。

如果您想 运行 在特定的时间间隔执行某些功能,则需要使用诸如 cron 之类的东西。

并且有一次你可以只调用一次该函数。

至于您的特定用例,您可以使用以下函数来实现它。

async function main() {
  const result = await prisma.$executeRaw`UPDATE "User" SET email=lower(email)`;
  console.log(result);
}

您可以从此Guide

了解更多关于获取原始数据库访问的信息