在 Postgres 中更改 table 查询
ALTER table query in Postgres
我正在尝试将 table 中一列的数据类型从 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);
ERROR: foreign key constraint
"awbstock_id_refs_airwaybill_number_d438187b" cannot be implemented
DETAIL: Key columns "awbstock_id" and "airwaybill_number" are of
incompatible types: bigint and character varying.
你应该:
- 在第一个 table
上删除主键约束
ALTER TABLE product_awbstock DROP CONSTRAINT product_awbstock_pkey;
- 删除第二个外键约束 table
ALTER TABLE ??? DROP CONSTRAINT awbstock_id_refs_airwaybill_number_d438187b;
- 更改两个 tables
上的列数据类型
ALTER TABLE product_awbstock ALTER COLUMN airwaybill_number TYPE varchar(15);
ALTER TABLE ??? ALTER COLUMN airwaybill_id TYPE varchar(15);
- 重新创建以前删除的约束
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);
我正在尝试将 table 中一列的数据类型从 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);
ERROR: foreign key constraint "awbstock_id_refs_airwaybill_number_d438187b" cannot be implemented
DETAIL: Key columns "awbstock_id" and "airwaybill_number" are of incompatible types: bigint and character varying.
你应该:
- 在第一个 table 上删除主键约束
ALTER TABLE product_awbstock DROP CONSTRAINT product_awbstock_pkey;
- 删除第二个外键约束 table
ALTER TABLE ??? DROP CONSTRAINT awbstock_id_refs_airwaybill_number_d438187b;
- 更改两个 tables 上的列数据类型
ALTER TABLE product_awbstock ALTER COLUMN airwaybill_number TYPE varchar(15);
ALTER TABLE ??? ALTER COLUMN airwaybill_id TYPE varchar(15);
- 重新创建以前删除的约束
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);