繁体   English   中英

Postgres中的ALTER表查询

[英]ALTER table query in Postgres

我试图将表中一列的数据类型从biginteger更改为varchar。

myproject-# \d+ product_awbstock
                         Table "public.product_awbstock"
      Column       |           Type           | Modifiers | Storage | Description 
-------------------+--------------------------+-----------+---------+-------------
 airwaybill_number | bigint                   | not null  | plain   | 
 used              | boolean                  | not null  | plain   | 
 created           | timestamp with time zone | not null  | plain   | 
 modified          | timestamp with time zone | not null  | plain   | 
Indexes:
    "product_awbstock_pkey" PRIMARY KEY, btree (airwaybill_number)
    "product_awbstock_used" btree (used)

我正在使用此查询,也给出了错误。

alter table product_awbstock ALTER  COLUMN airwaybill_number TYPE varchar(15);

错误:外键约束“ awbstock_id_refs_airwaybill_number_d438187b”无法实现

详细信息:关键列“ awbstock_id”和“ airwaybill_number”具有不兼容的类型:bigint和字符变化。

你应该:

  1. 将主键约束放在第一个表上

ALTER TABLE product_awbstock DROP CONSTRAINT product_awbstock_pkey;

  1. 在第二个表上删除外键约束

ALTER TABLE ??? DROP CONSTRAINT awbstock_id_refs_airwaybill_number_d438187b;

  1. 更改两个表上的列数据类型

ALTER TABLE product_awbstock ALTER COLUMN airwaybill_number TYPE varchar(15);

ALTER TABLE ??? ALTER COLUMN airwaybill_id TYPE varchar(15);

  1. 重新创建以前删除的约束

ALTER TABLE product_awbstock ADD CONSTRAINT product_awbstock_pkey PRIMARY KEY (airwaybill_number);

ALTER TABLE ??? ADD CONSTRAINT awbstock_id_refs_airwaybill_number_d438187b FOREIGN KEY (awbstock_id) REFERENCES product_awbstock (airwaybill_number);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM