| Dialect | Type | |||
| Query | Select | Insert | Update | Delete |
| Postgres |
PgSelect
|
PgInsert
|
PgUpdate
|
PgDelete
|
PgSelectQueryBuilder
|
||||
| MySQL |
MySqlSelect
|
MySqlInsert
|
MySqlUpdate
|
MySqlDelete
|
MySqlSelectQueryBuilder
|
||||
| SQLite |
SQLiteSelect
|
SQLiteInsert
|
SQLiteUpdate
|
SQLiteDelete
|
SQLiteSelectQueryBuilder
|
||||
); }; const values = [ { id: 1, lastLogin: new Date(), active: true, }, { id: 2, lastLogin: new Date(Date.now() + 1000 * 60 * 60), active: true, }, { id: 3, lastLogin: new Date(Date.now() + 1000 * 60 * 120), active: true, }, ]; await db .insert(users) .values(values) .onConflictDoUpdate({ target: users.id, set: buildConflictUpdateColumns(users, ['lastLogin', 'active']), }); ``` ```sql insert into users ("id", "last_login", "active") values (1, '2024-03-16T15:44:41.141Z', true), (2, '2024-03-16T16:44:41.141Z', true), (3, '2024-03-16T17:44:41.141Z', true) on conflict ("id") do update set last_login = excluded.last_login, active = excluded.active; ```
); }; const values = [ { id: 1, lastLogin: new Date(), active: true, }, { id: 2, lastLogin: new Date(Date.now() + 1000 * 60 * 60), active: true, }, { id: 3, lastLogin: new Date(Date.now() + 1000 * 60 * 120), active: true, }, ]; await db .insert(users) .values(values) .onDuplicateKeyUpdate({ set: buildConflictUpdateColumns(users, ['lastLogin', 'active']), }); ``` ```sql insert into users (`id`, `last_login`, `active`) values (1, '2024-03-16 15:23:28.013', true), (2, '2024-03-16 16:23:28.013', true), (3, '2024-03-16 17:23:28.013', true) on duplicate key update last_login = values(last_login), active = values(active); ```
Alex co-created Drizzle and helped start the Drizzle team. He's been here
since 2021, when the first code was written for drizzle-orm.
Now he leads core Drizzle development and works on Drizzle Studio, OneDollarStats, RubberBoots, and other projects.
Andrew is another Drizzle co-creator and co-founder. Back in 2020, he wrote a Drizzle ORM in Java. Later, seeing the need for the same kind of tool in the TypeScript world, he and Alex pivoted it to TypeScript. That's where it all started.
Dan was the first to take on a full drizzle-orm rewrite and
turn it into the API you know today. He also created the first version of
Relational Queries.
Now, after a short break, Dan is back in action and ready to ship more great things for Drizzle.
Roman (Zeus) is working hard to bring Drizzle Studio to you in every possible form.
Roman is writing a lot about Drizzle Studio{" "} on X âĸ GitHub
Serhii rewrote Relational Queries, mastered TypeScript types at the
highest level, and continues shipping great features to the{" "}
drizzle ecosystem.
Oleksandr ("Sania") is a drizzle-kit wizard. He helped
rewrite the
alternation-engine, the drizzle-kit test suite, and is now on
a mission to make sure there are 0 GitHub issues left with the{" "}
drizzle-kit tag.
"I'm now professionally responsible for what used to happen on X for free" (c)
Give him a sub: X