0
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');

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

请帮忙。

4

3 回答 3

1

看起来您应该只是颠倒表中两个字段的顺序。然后,如果您插入单个列值,它将覆盖“分数”字段并使用主键序列序列为另一列生成值。这个例子做了我认为你想要的:

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

INSERT INTO u_account VALUES ('122233344');
于 2009-06-28T17:45:00.723 回答
1

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

INSERT INTO u_account VALUES (DEFAULT, '122233344');
于 2009-07-20T09:19:41.287 回答
0

您可以编写一个触发器,将下一个序列值替换为每次插入时的 jid 列。

于 2009-07-20T05:48:54.193 回答