Php 使用插入返回值PGSQL进行更新

Php 使用插入返回值PGSQL进行更新,php,postgresql,php-pgsql,Php,Postgresql,Php Pgsql,正在尝试使用新创建的id更新某些列。示例: ╔═══════════════════════════╗ ║ TABLE_LIST_BINDER ║ ╠════╦══════════════════════╣ ║ id ║ tbl_id_lists ║ ╠════╬══════════════════════╣ ║ 1 ║ 1,2,3,4,5,6,7,8,9,10 ║ ╚════╩══════════════════════╝ ╔════════════════

正在尝试使用新创建的id更新某些列。示例:

╔═══════════════════════════╗
║ TABLE_LIST_BINDER         ║
╠════╦══════════════════════╣
║ id ║ tbl_id_lists         ║
╠════╬══════════════════════╣
║ 1  ║ 1,2,3,4,5,6,7,8,9,10 ║
╚════╩══════════════════════╝

╔═════════════════════════════╗
║ TABLE_LIST_ITSELF           ║
╠════╦═════════════╦══════════╣
║ id ║ text_or_sm  ║ some_val ║
╠════╬═════════════╬══════════╣
║ 11 ║ ok lets see ║ ikd123   ║
╚════╩═════════════╩══════════╝
好的,这是一个粗略的例子

文本解释:我正在尝试更新tbl\u列表\u活页夹的tbl\u id\u列表,方法是使用postgresql将刚刚插入的行添加到表\u列表\u ITSLEF中。一次查询是否可行

我的SQL代码当前状态:

UPDATE TABLE_LIST_BINDER 
    SET tbl_id_lists=concat(tbl_id_lists,','(
        INSERT INTO TABLE_LIST_ITSELF (text_or_sm, some_val) 
        VALUES ('letz danse','mkei') 
        RETURNING id)) 
    WHERE id=1

我的方法是:使用concat组合现有的文本值,然后是逗号,最后是返回的ID值。

我想你在寻找触发器哦?但是触发器就像监听器,不是吗?我真的不需要,所以每次都会更新,我从PHP代码运行它,所以它是一次性查询。
TABLE\u LIST\u BINDER.tbl\u id\u LIST
是文本列吗?不是一个整数数组?是的,它是一个文本列,它是一个旧表,不知道为什么有人认为它是文本会很有趣谢谢,你能解释一下它是如何工作的,我假设它是一个临时的持有者,所以我可以在插入后使用它(我的查询是错误的,因为我试图用尚未插入的id更新)对吗?@Comirdc你说得对,你必须分开两个操作。上面的链接很有用。阅读7.8.2。我建议阅读整个页面,因为这种方法有一些限制。例如,您不能在不同的州更新同一行两次。
with _insert as 
(
INSERT INTO TABLE_LIST_ITSELF (text_or_sm, some_val) 
        VALUES ('letz danse','mkei') 
        RETURNING id
)
UPDATE TABLE_LIST_BINDER 
    SET tbl_id_lists=concat(tbl_id_lists,',' || (select id from _insert))
where id = 1;