sql - Postgresql-Insert值出现非空冲突

标签 sql postgresql error-handling

insert into "StarSchema"."Customer" 
(address,address2,district,postal_code,phone)
select address,address2,district,postal_code,phone
from public.address;

我试图将另一个表中的值插入到我刚刚创建的表中。但是我不知道为什么会有非null的冲突。由于此查询不包含(customer_id)这是主键。而且我没有在模式要求非null中定义任何值。地址2中有一些值,而postal_code为null。当我在查询中删除这两列时。一切正常。有什么方法可以将所有列都放入新表中?
    CREATE TABLE "StarSchema"."Customer"
(
    first_name character varying COLLATE pg_catalog."default",
    last_name character varying COLLATE pg_catalog."default",
    activebool boolean,
    create_date date,
    address character varying COLLATE pg_catalog."default",
    address2 character varying COLLATE pg_catalog."default",
    district character varying COLLATE pg_catalog."default",
    postal_code character varying COLLATE pg_catalog."default",
    city character varying COLLATE pg_catalog."default",
    country character varying COLLATE pg_catalog."default",
    phone character varying COLLATE pg_catalog."default",
    customer_id integer NOT NULL,
    email character varying COLLATE pg_catalog."default",
    active integer,
    CONSTRAINT "Customer_pkey" PRIMARY KEY (customer_id)
)

问题中的错误信息是
错误:空值违反字段“customer_id”中的非空约束

enter image description here

最佳答案

大概是想让customer_id自动分配。如果是这样,则将其定义为:

customer_id integer generated always as identity primary key,

或在较旧的Postgres版本中:
customer_id serial primary key,

附带说明一下,我通常将主键设为表的第一列,而不是最后一列。

关于sql - Postgresql-Insert值出现非空冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61054028/

相关文章:

python - 设计代码以在 Django/Python 应用程序中正确处理错误?

sql复杂组查询

sql - 连接到哪个数据库以供更高级别的应用程序管理其他数据库

arrays - 连接 postgresql json 数组中对象的字符串值

sql - 如何在没有记录的情况下有选择地加入另一个表中具有不同日期范围的日历表以获取计数?

postgresql - docker Postgres Liquibase

oracle - Unix脚本-无法正确捕获或解释sqlplus中的错误代码

sql - SQL中如何获取所有不包含特定2个字符的字段?

php - Mysql `select` 查询中的运算符问题

ruby-on-rails - 推送到Heroku时“different prefix”错误和“Lockfile is unreadable”错误