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');
它会忽略主键并只更新分数。
请帮忙。
答案 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列的下一个序列值。