次のようなものを使用できます:
INSERT INTO users (user_id, name)
SELECT 1 + coalesce((SELECT max(user_id) FROM users WHERE name='Bob'), 0), 'Bob';
しかし、そのようなクエリは競合状態につながる可能性があります。トランザクションを実行していることを確認し、実行する前にユーザーテーブルをロックしてください。そうしないと、同じ番号の2人のボブになってしまう可能性があります。
次のようなものを使用できます:
INSERT INTO users (user_id, name)
SELECT 1 + coalesce((SELECT max(user_id) FROM users WHERE name='Bob'), 0), 'Bob';
しかし、そのようなクエリは競合状態につながる可能性があります。トランザクションを実行していることを確認し、実行する前にユーザーテーブルをロックしてください。そうしないと、同じ番号の2人のボブになってしまう可能性があります。