我正在玩:
DROP TABLE users CASCADE;
CREATE SEQUENCE users_id_seq MINVALUE 100;
CREATE TABLE users (
id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('users_id_seq') * 100 + 1,
...
);
ALTER SEQUENCE users_id_seq OWNED BY users.id;
DROP TABLE txns CASCADE;
CREATE SEQUENCE txns_seq MINVALUE 100;
CREATE TABLE txns (
id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('txns_seq') * 100 + 2,
...
);
ALTER SEQUENCE txns_seq OWNED BY txns.id;
...
在我看来,这有以下好处:
- 每个 id 在整个数据库中都是唯一的,从而消除了错误的表错误。
- 没有 id 的值小于 10,000,消除了与大多数迭代计数器的混淆。
- 包含表很容易从任何 id 的最后两位数字中学习。
缺点:
- 我们浪费了 99% 的 ID。
我没有考虑到哪些其他缺点?