在 Postgres 中,准备好的查询和用户定义的函数是否等同于一种防止 SQL 注入的机制?
一种方法比另一种方法有什么特别的优势吗?
postgresql sql-injection prepared-statement plpgsql functions
我正在设计一个以不同语言存储数据的数据库(使用 UTF-8),所以我认为显示查询结果的最佳方式是在查询期间根据用户的语言对其进行排序(因为有多个正确的方法来做到这一点),如下:
SELECT a < b COLLATE "de_DE" FROM test1;
Run Code Online (Sandbox Code Playgroud)
假设这是处理国际数据的正确方法,那么对于数据库本身来说,哪种整理是最好的呢?PostgreSQL 文档说:
C 和 POSIX 排序规则都指定了“传统的 C”行为,其中只有 ASCII 字母“A”到“Z”被视为字母,并且严格按照字符代码字节值进行排序。
我认为这是这种情况下的最佳选择,还是我错了?
(额外的问题:在查询本身中选择排序规则是否太慢?)。
我有一个表my_tables,它在几个表中被引用为外键。
我想选择my_table其他表中未引用的所有行。
AFAIK,应该可以以通用方式(带有一些内省魔法)来做到这一点。