Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 插入两行,每行插入不同的表,其中一行引用另一行';s主键_Sql_Postgresql_Insert_Foreign Key Relationship - Fatal编程技术网

Sql 插入两行,每行插入不同的表,其中一行引用另一行';s主键

Sql 插入两行,每行插入不同的表,其中一行引用另一行';s主键,sql,postgresql,insert,foreign-key-relationship,Sql,Postgresql,Insert,Foreign Key Relationship,大家好 检查此场景 表1列->表1 id(pkey)|部分列|注释| 表2列->|表2_id(pkey)|一些_其他_列|表1_id(fkey)|注释| 所有主键均为序列号或自动编号类型。 表2的第3列是引用表1主键的fk 我想将两行插入(从C++应用程序) 我是否必须插入表1,然后选择查询条目的主键,然后插入表2中包含pkey结果的行 有没有更有效的处理方法?比如说使用几乎两个查询?我建议 该网站是熟悉PostgreSQL的有用资源 具体来说,部分如何获取串行插入的值? 最简单的方法是检索 已

大家好 检查此场景

表1列->表1 id(pkey)|部分列|注释|

表2列->|表2_id(pkey)|一些_其他_列|表1_id(fkey)|注释|

所有主键均为序列号或自动编号类型。 表2的第3列是引用表1主键的fk

我想将两行插入(从C++应用程序)

我是否必须插入表1,然后选择查询条目的主键,然后插入表2中包含pkey结果的行

有没有更有效的处理方法?比如说使用几乎两个查询?

我建议

该网站是熟悉PostgreSQL的有用资源

具体来说,部分如何获取串行插入的值?

最简单的方法是检索 已分配序列值并返回。 使用中的示例表 上一个问题,看起来像 这:

插入到person(name)值中 ('Blaise Pascal')返回id


您还可以调用nextval()并在插入中使用该值,或者在插入后调用currval()

如果应用程序中不需要表\u 1\u id值,可以完全跳过检索:

INSERT INTO table_1(cols...) VALUES(vals...)
INSERT INTO table_2(table_1_id, cols...) VALUES(currval('table_1_table_1_id_seq'), vals...)

我同意:使用
返回
是最安全的方法。