我正在使用 Drizzle、Next.js 14 应用程序路由器和 Neon 无服务器。谁能帮我分享表中 id 字段的最佳列类型?我认为自动生成、随机但不是很大(如 UUID)的解决方案是最好的。
大多数教程都显示文本或序列类型。但文本不会自动设置 Id,因此我无法在不提供 id 字段的情况下使用插入。串行是自动递增的,但我读到这种自动递增的 id 不利于安全(id 是可预测的)。 UUID 是另一种选择,但它们占用大量空间并且还有其他一些缺点。那我该用哪一个呢?
如果您能分享一个简短的例子来回答您的问题,我会很高兴。谢谢你。
我尝试了串行字段,但它是可预测的且不太安全。我尝试了 UUID,但它太长了。我需要随机短自动生成 ID 字段。
我也遇到了同样的问题。
我现在正在做的是使用一个函数来记录每个表的平面文件中的插入数量。
用任意长度的随机字符串(根据需要)填充数字,这会返回一个对于每个表来说都是唯一的字符串。
const createId = () => {
return ....
}
export const orders = pgTable("orders", {
id: varchar("id", { length: 128 }).$defaultFn(() => createId()).primaryKey(),
})