如何防止主序列主键不按顺序更新?

时间:2009-06-28 12:33:22

标签: postgresql primary-key auto-increment

CREATE TABLE u_account (
Jid serial primary key,
score int4
);

当我像这样更新它时,主键工作正常(更新自己);

INSERT INTO u_account ('score') VALUES ('122233344');

但是,当我插入这样的值时;

INSERT INTO u_account VALUES ('122233344');

这会更新主键;

我不希望主键接受除了应该接下来的数字以外的任何内容。

有人曾经为我设置过,所以如果我输入这段代码,那么

INSERT INTO u_account VALUES ('122233344');

它会忽略主键并只更新分数。

请帮忙。

3 个答案:

答案 0 :(得分:1)

看起来您应该反转表格中两个字段的顺序。然后,如果您插入单个列值,它将覆盖“score”字段并使用主键序列为另一列生成值。这个例子符合我的想法:

CREATE TABLE u_account (
score int4,
Jid serial primary key
);

INSERT INTO u_account VALUES ('122233344');

答案 1 :(得分:1)

您可以使用“DEFAULT”将正确的值放在主键字段中,例如:

INSERT INTO u_account VALUES (DEFAULT, '122233344');

答案 2 :(得分:0)

您可以编写一个触发器,用于替换每个插入的jid列的下一个序列值。