PostgreSQL -添加行时忽略缺少的列

l0oc07j2  于 2023-01-13  发布在  PostgreSQL
关注(0)|答案(1)|浏览(170)

在PostgreSQL中使用INSERT INTO时,有没有办法忽略缺少列的值?
例如:

INSERT INTO tblExample(col_Exist1, col_Exist2, col_NotExist) VALUES ('Val1', 'Val2', 'Val3)

我想插入一个包含值Val1Val2的新行,但忽略Val3,因为它的列不存在,所以结果将是:

# | col_Exist1 | col_Exist2
-----------------------------
 1 | Val1       | Val2

我看到有一个INSERT ... ON CONFLICT DO NOTHING结构,但这似乎只适用于整行-而不是奇异值。
为了解释,我意识到这可能不是最佳实践,但我的应用程序使用基于文档属性动态创建的查询-属性 * 可以 * 变化,但有很多列,所以显式定义它们是痛苦的。相反,我使用一个'模板'文档来定义它们,希望我可以忽略模板文档中不存在的其他文档的属性。
先谢了。
编辑:现在我已经找到了一个解决方法--我只是查询表以获得列的列表--如果列名存在,则将该属性添加到新的INSERT INTO查询中。

6tdlim6h

6tdlim6h1#

把文档的数据移动到json中怎么样?形成一个表格,其中包含以下字段:

Table: Documents

   id: uuid4
   name: varchar or text
   data: json type according https://www.postgresql.org/docs/devel/datatype-json.html

在这个技巧之后,你可以存储任何你想要的动态数据

相关问题