【发布时间】:2023-08-14 14:28:01
【问题描述】:
假设我有下表的东西。我想要表中的唯一名称,所以没有重复。 插入事物的过程不需要检查同名的事物是否已经存在。
CREATE TABLE things(
id SMALLSERIAL PRIMARY KEY,
name varchar UNIQUE
);
当我插入这样的值时,它会起作用。如果 'desk' 已经在里面,它就不会被插入。
INSERT INTO things (name)
VALUES ('desk')
ON CONFLICT DO NOTHING;
唯一的问题是 ON CONFLICT DO NOTHING 并不是真的什么都不做。它仍然会增加 id 字段的序列。
如果这种情况经常发生,id 序列最终会变得对于字段类型来说太大。
有没有办法防止这种情况发生?
【问题讨论】:
-
太频繁了?列数据类型?
-
使用
bigint并忘记问题。
标签: sql postgresql sql-insert auto-increment create-table