【发布时间】:2016-07-17 11:36:55
【问题描述】:
我创建了一个表
CREATE TABLE street (
id SERIAL PRIMARY KEY NOT NULL,
street_name CHAR (30) NOT NULL,
city_id INTEGER REFERENCES city,
building_number CHAR(10));
之后我插入一些数据:
INSERT INTO street (street_name, city_id) VALUES ('Sumskaya', 1);
数据以 id=1 添加。然后我插入下一个数据
INSERT INTO street (street_name, city_id) VALUES ('Sumskaya', 10);
并得到错误
表“city”中不存在键 (city_id)=(10)。
我更改了插入数据
INSERT INTO street (street_name, city_id) VALUES ('Sumskaya', 2);
并在表中获取 id = 3 的行。缺少 id = 2。为什么串行分配值 3 而不是 2 以及如何更改它?
【问题讨论】:
-
“以及如何改变它?” - 你没有。这就是序列的工作方式。 生成的 主节点的值完全没有意义。下一行的值是 3、42 还是 9762938412942 无关紧要。only 这样的 ID 必须是唯一。
-
谢谢,我明白了。
标签: sql postgresql