Prisma ORM v8.0.0-rc.17 makes migrations refuse data loss by default: migration plan and db update ask per dropped model/field, answered with --delete <subject>, the new --rename <old>:<new> (keeps rows; MongoDB renames refused), or --allow <Model> for access-widening ops like dropping RLS policies; --confirm no longer implies consent and scripts must switch flags, with CLI.CONSENT_REQUIRED errors listing needed flags.
destructive is redefined as actual data loss; drops of indexes/constraints/defaults and value-preserving type changes are now non-consenting widening ops; unapplied migration.ts files get new ops.json/migrationHash.
Control API breaking change: executeMigrationPlanCommand, executeDbUpdate, and dbUpdate require an answerQuestions callback; consent is removed, acceptDataLoss no longer covers access widening (use acceptAccessWidening), and MIGRATION.DESTRUCTIVE_CHANGES/CONSENT_PLAN_MISMATCH errors are gone.
SQL client renames: collection method apply → with, scope → fragment (via db.orm.fragment(...)), with types Scope* → Fragment*.
db.enums members now hold values as queries return them (bigint → bigint, dates → Date/Temporal, bytes → Uint8Array); enum members must be written as the database stores them (pg/numeric, pg/inet normalized forms enforced) and several lossy codecs (pg/timestamp-string@1, pg/bytea@1, mongo/json@1, etc.) are refused for enums.
New features: row locks (forUpdate, forShare, forNoKeyUpdate, forKeyShare with nowait/skipLocked), @default(autoincrement()) on existing columns plans a sequence past current max, and relations can name their backing foreign-key index via index: "<name>" (all SQL contracts get new storage hashes requiring re-emit).
Other breaking changes: MongoDB index sort syntax becomes sort(field, Desc); CHECK constraints on enum-list columns change; extension authors must adapt planner signatures (statements, origin, dataLoss, accessWidening), enum codec equality trait requirements, and regenerate bundled SQL contracts.