第一次使用 PostgreSQL,连建表都不会,请教点经验

2024-05-25 15:46:09 +08:00
 teli

考虑 ai 时代了。为了用上 pgvector ,尝试接下来把主数据库直接换用 pg 。

请教点经验

  1. 自增长主键,怎么设置为好?之前 mysql 都是 bitint 自增长
  2. collate 怎么选?之前 mysql 都是 utfmb4 。网上说应该 zh_CN-utf8 。docker 安装的,根本没 zh_CN-utf 选。好像要自己打包镜像才有。 没 3 了。建表都不会建。还有什么其它坑,还请直接相告。

之前 mysql 时,update_time 是自动更新。postgres 好像不能自动更新,有什么好的替代方案。

3846 次点击
所在节点    PostgreSQL
11 条回复
gzlock
2024-05-25 16:31:12 +08:00
用 prisma 挺容易的,就是需要多装一个 nodejs 环境
sagaxu
2024-05-25 16:50:20 +08:00
1. bigserial
2. 可以基于这个 docker 增加 locale 支持
3. 触发器
gam2046
2024-05-25 16:51:04 +08:00
pg 里一般通过 serial 类型实现自增。

至于其他建库、建表等基础操作,DDL 语句都是一样的。

create database
create table

“update_time 是自动更新”不太理解含义,如果是值得记录更新时,希望 DB 自动设置某个字段,你可以使用触发器。
ck65
2024-05-25 16:57:09 +08:00
tairan2006
2024-05-25 20:09:56 +08:00
ai 时代了 你这些问题都可以问 ai 的
suuuch
2024-05-25 21:06:31 +08:00
#3 说的很正确了。

update_time 自动更新,pg 确实不支持,替代方案是放到 ORM 去实现。

PG 的默认编码是 UTF8 的,默认 UTF8 的编码兼容性很不错,中英文直接用毫无问题。
meiguozhiguang
2024-05-25 21:08:27 +08:00
我也是刚用,好多不一样的,一点点摸索
iamdlsdls
2024-05-25 21:20:27 +08:00
@suuuch 这么简单的需求 pg 怎么可能不支持呢,更新时间戳的值为 now() 就行了
suuuch
2024-05-25 21:27:12 +08:00
@iamdlsdls 我对这个问题的理解是像 Mysql 那样,created_time, updated_time 的操作,updated_time 可以跟随 这一行记录中的任何一个字段的数据变化而自动更新,且不需要单独指定 updated_time = now() 这样写出来。
ysw
2024-05-26 05:04:37 +08:00
用 orm 吧
teli
2024-05-26 13:28:30 +08:00
@sagaxu
1. 为什么不是 bigint 加 ALWAYS AS IDENTITY ?
2. docker 可以在不构建镜像的情况下,增加 locale 吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1043881

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX