我在PostgreSQL数据库中有一个名为product_details
的表,这个表的两列是bill_no INT
和purchase_date DATE
。
目前bill_no
是主键,但我的客户希望将其更改为bill_no
和购买年份,因为账单号在每年开始时以1开始。
是否有办法将表的主键更改为bill_no
,只更改purchase_date
的年部分 ?
您可以像这样删除主键:
alter table bill drop constraint bill_pkey;
如果密钥的名称不是"bill_pkey",则使用d
查找它的名称。
您可以添加一个新的主键,如:
alter table bill add constraint bill_pkey primary key (bill_no, purchase_date);
但是您只需要year部分的键。Postgres不支持,但是你可以使用唯一索引:
create unique index ux_bill on bill (bill_no, extract(year from purchase_date));
唯一索引将做主键所做的一切,但它不会有主键标签。