postgresql postgres格式()-节点js页面格式-与UPDATE一起使用

flseospp  于 2022-11-23  发布在  PostgreSQL
关注(0)|答案(1)|浏览(110)

我特灵用Postgres一次更新多行。
此查询有效

const updateQuery = `
        UPDATE dating.photos
        SET
            ordering = nv.ordering,
            profile = nv.profile
        FROM
                ( VALUES
                        ('ddb73491-b582-4ff5-afb4-e57e31917b03', 4, false),
                        ('9cd57b09-17ff-4b88-b08f-b1ef02ec8c1d', 2, false),
                        ('02d9d7e2-2601-4e6f-b7d4-ddebdbee420d', 3, false),
                        ('5e04ff58-8f85-43f8-a4ca-dfde85da9e6f', 1, true)
                ) AS nv (photoname, ordering, profile)
        WHERE photos.photoname = nv.photoname`

我现在尝试使用pg-format将数据加载到UPDATE中,以便对数据进行清理。
注意:我见过pg-format(postgres format())与SELECT和INSERT一起使用,但我不能100%确定它是否可以与UPDATE一起使用。
我尝试过像这样加载数组:

const myNestedArray = [
        [
            "ddb73491-b582-4ff5-afb4-e57e31917b03",
            1,
            true
        ],
        [
            "9cd57b09-17ff-4b88-b08f-b1ef02ec8c1d",
            2,
            false
        ]
    ]

我尝试过像这样加载数组:

const myNestedArray = [
        (
            "ddb73491-b582-4ff5-afb4-e57e31917b03",
            1,
            true
        ),
        (
            "9cd57b09-17ff-4b88-b08f-b1ef02ec8c1d",
            2,
            false
        )
    ]

这是我正在使用的查询...您可以看到值的%L

// Update Photo Order
    const query = format(
        `
        UPDATE dating.photos 
        SET 
            ordering = nv.ordering,
            profile = nv.profile
        FROM
                ( VALUES %L
                ) AS nv (photoname, ordering, profile)
        WHERE photos.photoname = nv.photoname`,
        myNestedArray
    )

我收到错误“订购照片错误:错误:列“ordering”的类型为smallint,但表达式的类型为text
...它似乎没有将值与列正确匹配。
有什么想法吗?
谢谢亚当

ni65a41a

ni65a41a1#

我在pg-format中也遇到了同样的问题,如果它要用于格式化嵌套数组数据,而这些数据的每个值都有不同的数据类型,我认为pg-format无法处理它

相关问题