【发布时间】:2020-04-30 00:51:08
【问题描述】:
我正在使用 PostgreSQL 数据库。我有两个表,如下所示
我想通过引用 Table_1 中的记录来添加 Table_2 中缺少的 person_ids。
如果您看到上面的表格,您会注意到 table_1 中的 person_id = 2,4 在 table_2 中丢失了。
虽然我可以在论坛的帮助下做到这一点,但问题在于非空约束。
表2创建表定义如下图
CREATE TABLE Table_2(
SNO INTEGER (20) UNIQUE NOT NULL,
PERSON_ID INTERGER (20) NOT NULL,
date_1 DATE NOT NULL,
date_2 DATE NOT NULL,
DEPT VARCHAR (10) NOT NULL
);
这是我尝试过的
INSERT into Table_2 (person_id,date_1,date_2,Dept) (select distinct person_id,TO_DATE('1900-01-01', 'YYYY-MM-DD'),TO_DATE('2900-12-30', 'YYYY-MM-DD'),'F' from Table_1 where person_id not in (select distinct person_id from Table_2))
这会导致如下所示的错误
`ERROR: null value in column "SNO" violates not-null constraint
DETAIL: Failing row contains (null, 2, 1900-01-01, 2900-12-30, F).
SQL state: 23502`
我希望我的输出如下所示。请注意,我的真实数据有超过 50K 条记录,新添加的记录应按原样继续。
【问题讨论】:
-
我在上一个问题中告诉过你不要在表格中使用图像。然而你又这样做了......
-
请在表1中显示
CREATE TABLE。表1中SNO和person_id有什么区别? -
嗨@VesaKarjalainen - 对表格进行了一些更改。你可以看到更新的帖子。现在
sno列不在table_1中 -
table_1有sno列吗?table_2中的sno有序列还是序列列? -
这不是
CREATE TABLE命令,也不是表1。这也不是表2,它有“性别”和/或“部门”吗?并且不要发布图像,发布代码有人可以复制粘贴。
标签: sql postgresql select insert where-clause