所以我有一张表,由于某些设计原因,不能使用外键映射到其他实体。所以我正在研究一个被安全删除媒体表中条目的函数。目前我已经编写了使用此资源作为基本功能的函数,作为如何将表名动态插入查询(http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN)的指南。目前我的查询编写如下
DECLARE
rows_returned numeric;
is_media boolean;
BEGIN
DELETE FROM solo_media WHERE entity_id = row_to_delete;
EXECUTE "DELETE FROM $1 WHERE id = $2;" INTO rows_returned USING table_name, row_to_delete;
END;
当它运行时(使用table_name和row_to_delete传入参数)我收到错误
错误:列“DELETE FROM $ 1 WHERE id = $ 2;”不存在 第1行:选择“DELETE FROM $ 1 WHERE id = $ 2;” ^ QUERY:SELECT“DELETE FROM $ 1 WHERE id = $ 2;” 语境:PL / pgSQL函数“safe_del”第7行在EXECUTE语句
用
调用它时SELECT safe_del(tableName, rowNumber);
答案 0 :(得分:0)
正如Milen A. Radev指出我使用错误的字符来识别我的字符串,我将其转换为美元转义字符串,并解决了问题。