From 4346c207fb9323a47126814890d58fd2490f9fde Mon Sep 17 00:00:00 2001 From: Dmitrii Troitskii Date: Sat, 14 Mar 2026 02:34:54 +0000 Subject: [PATCH] fix(docs): correct MSSQL insert output() call order Per MSSQL SQL syntax, OUTPUT clause comes before VALUES. The correct Drizzle API is: db.insert(users).output().values({ name: 'Dan' }) not .values(...).output(). Fixes drizzle-team/drizzle-orm#5472 --- src/content/docs/insert.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/content/docs/insert.mdx b/src/content/docs/insert.mdx index 5c8c8c9dc..36d965890 100644 --- a/src/content/docs/insert.mdx +++ b/src/content/docs/insert.mdx @@ -79,12 +79,12 @@ const result = await db.insert(usersTableDefFn).values([{ name: 'John' }, { name ## output -You can insert a row and get it back in PostgreSQL and SQLite like such: +You can insert a row and get it back in MSSQL using `.output()`. Note that `.output()` must be called **before** `.values()`, as this mirrors the MSSQL SQL syntax where `OUTPUT` precedes the `VALUES` clause: ```typescript copy -await db.insert(users).values({ name: "Dan" }).output(); +await db.insert(users).output().values({ name: "Dan" }); // partial return -await db.insert(users).values({ name: "Partial Dan" }).output({ insertedId: users.id }); +await db.insert(users).output({ insertedId: users.id }).values({ name: "Partial Dan" }); ``` ## Insert multiple rows