【问题标题】:How to prevent primary serial primary key from being updated with number not in sequence?如何防止主序列主键不按顺序更新数字?
【发布时间】:2010-11-06 11:48:27
【问题描述】:
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');

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

请帮忙。

【问题讨论】:

    标签: postgresql primary-key auto-increment


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        CREATE TABLE u_account (
        score int4,
        Jid serial primary key
        );
        
        INSERT INTO u_account VALUES ('122233344');
        

        【讨论】:

          猜你喜欢
          • 2013-04-15
          • 1970-01-01
          • 1970-01-01
          • 2020-06-22
          • 2016-08-31
          • 2021-08-03
          • 2018-08-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多