Postgresql Postgres:违反外键约束

Postgresql Postgres:违反外键约束,postgresql,Postgresql,我使用COPY命令在数据库中加载一组数据,然后创建主键和外键 当我创建其中一个外键时,收到错误消息:违反外键约束“some\fkey”。是否有一种方法可以提高日志级别,以便查看发生此冲突的行,以便返回并调试/检查数据?解决方法: 假设您的表如下所示: CREATE TABLE a (a_id INTEGER PRIMARY KEY, x TEXT); CREATE TABLE b (b_id INTEGER PRIMARY KEY, a_id INTEGER, x TEXT); 创建以下外键时

我使用COPY命令在数据库中加载一组数据,然后创建主键和外键

当我创建其中一个外键时,收到错误消息:
违反外键约束“some\fkey”
。是否有一种方法可以提高日志级别,以便查看发生此冲突的行,以便返回并调试/检查数据?

解决方法:

假设您的表如下所示:

CREATE TABLE a (a_id INTEGER PRIMARY KEY, x TEXT);
CREATE TABLE b (b_id INTEGER PRIMARY KEY, a_id INTEGER, x TEXT);
创建以下外键时会出现错误:

ALTER TABLE b ADD CONSTRAINT a_a_id_fk FOREIGN KEY (a_id) REFERENCES a (a_id) ON UPDATE CASCADE ON DELETE RESTRICT;
您可以连接两个表以获得有问题的行:

SELECT b_id, a_id FROM b LEFT JOIN a USING (a_id) WHERE a.a_id IS NULL;
让我看看

样本数据:

INSERT INTO a VALUES (1, 'a'), (2, 'b'), (3, 'c'); 
INSERT INTO b VALUES (1, 1, 'x'), (2, 3, 'y'), (3, 1000, 'z');
以及上述查询的结果:

 b_id | a_id
------+------
    3 | 1000
(1 row)
解决办法:

假设您的表如下所示:

CREATE TABLE a (a_id INTEGER PRIMARY KEY, x TEXT);
CREATE TABLE b (b_id INTEGER PRIMARY KEY, a_id INTEGER, x TEXT);
创建以下外键时会出现错误:

ALTER TABLE b ADD CONSTRAINT a_a_id_fk FOREIGN KEY (a_id) REFERENCES a (a_id) ON UPDATE CASCADE ON DELETE RESTRICT;
您可以连接两个表以获得有问题的行:

SELECT b_id, a_id FROM b LEFT JOIN a USING (a_id) WHERE a.a_id IS NULL;
让我看看

样本数据:

INSERT INTO a VALUES (1, 'a'), (2, 'b'), (3, 'c'); 
INSERT INTO b VALUES (1, 1, 'x'), (2, 3, 'y'), (3, 1000, 'z');
以及上述查询的结果:

 b_id | a_id
------+------
    3 | 1000
(1 row)
解决办法:

假设您的表如下所示:

CREATE TABLE a (a_id INTEGER PRIMARY KEY, x TEXT);
CREATE TABLE b (b_id INTEGER PRIMARY KEY, a_id INTEGER, x TEXT);
创建以下外键时会出现错误:

ALTER TABLE b ADD CONSTRAINT a_a_id_fk FOREIGN KEY (a_id) REFERENCES a (a_id) ON UPDATE CASCADE ON DELETE RESTRICT;
您可以连接两个表以获得有问题的行:

SELECT b_id, a_id FROM b LEFT JOIN a USING (a_id) WHERE a.a_id IS NULL;
让我看看

样本数据:

INSERT INTO a VALUES (1, 'a'), (2, 'b'), (3, 'c'); 
INSERT INTO b VALUES (1, 1, 'x'), (2, 3, 'y'), (3, 1000, 'z');
以及上述查询的结果:

 b_id | a_id
------+------
    3 | 1000
(1 row)
解决办法:

假设您的表如下所示:

CREATE TABLE a (a_id INTEGER PRIMARY KEY, x TEXT);
CREATE TABLE b (b_id INTEGER PRIMARY KEY, a_id INTEGER, x TEXT);
创建以下外键时会出现错误:

ALTER TABLE b ADD CONSTRAINT a_a_id_fk FOREIGN KEY (a_id) REFERENCES a (a_id) ON UPDATE CASCADE ON DELETE RESTRICT;
您可以连接两个表以获得有问题的行:

SELECT b_id, a_id FROM b LEFT JOIN a USING (a_id) WHERE a.a_id IS NULL;
让我看看

样本数据:

INSERT INTO a VALUES (1, 'a'), (2, 'b'), (3, 'c'); 
INSERT INTO b VALUES (1, 1, 'x'), (2, 3, 'y'), (3, 1000, 'z');
以及上述查询的结果:

 b_id | a_id
------+------
    3 | 1000
(1 row)

哪个版本的PostgreSQL?哪个版本的PostgreSQL?哪个版本的PostgreSQL?哪个版本的PostgreSQL?