【问题标题】:How can we auto increment one of the columns of a compostite primary key?我们如何自动增加复合主键的列之一?
【发布时间】:2023-03-04 14:55:02
【问题描述】:
 CREATE TABLE abc(
        seq_id INT NOT NULL,
        name VARCHAR(30) NOT NULL,
        value VARCHAR(100),
        PRIMARY KEY (seq_id, name)
    );

然后表格内容将是:

Seq_id    Name            Value

1        Bill.billNo     1234
1        Bill.date       25/07/2014
1        Person.fname     abc
1        Person.lname     xyz

2        Bill.billNo     1220
2        Bill.date       11/07/2014
2        Person.fname     def
2        Person.lname     ghy

我希望 seq_id 列值自动递增。我如何做到这一点?

【问题讨论】:

    标签: java sql postgresql auto-increment


    【解决方案1】:

    一般来说,这并不容易做到。您可以自动增加单个列(在 Postgres 中称为 SERIAL),但不能将一列相对于另一列。嗯,你可以。但它需要使用触发器。

    不过,在您的情况下,我认为您遇到了数据建模问题。 seq_id 实际上代表某事。但是你没有桌子。我怀疑您应该有一个单独的表,例如BillPersonsSERIAL id,每个序列一行。然后你会有另一个表,比如BillPersonDetails,它有自己的SERIAL id 和对BillPersons 的外键引用。

    【讨论】:

    • 你能告诉我如何使用触发器来实现这个吗?我以前从未使用过触发器,因为我是新手。
    • @SharmishthaKulkarni 。 . .我的建议是修复数据结构,而不是尝试使用触发器来支持令人困惑的数据结构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多