在 Postgres中,值在插入到/列时会根据设置bytea
自动转换为。text
text
varchar
bytea_output
我正在使用一些程序代码,它会自动将程序中的某些值(二进制字符串)转换为 bytea 格式。问题是用户可能不小心尝试将这些值插入到text
列中。默认情况下,Postgres 将允许这样做,但这并不总是能顺利进行 - 例如,如果有非 ASCII 字节。我认为用户可能没有意识到奇怪的插入行为是由于他们在调用程序中使用了二进制字符串。因此,如果bytea
发生text
转换,我希望 Posgres 引发异常。
我知道CREATE CAST
,但据我所知,这是一个系统范围的操作。我不想更改其他连接的系统行为。我可以这样做CREATE CAST
,DROP CAST
但这对我来说似乎很脏,因为它仍然不包含在连接中。
如何进行(隐式)强制转换bytea
以text
仅在当前连接中引发异常?
sql是自动发出的,所以我可以在每条语句之前添加一个前面的sql语句,没问题。
我对这种行为有点惊讶,因为 Postgres 通常会在严格方面犯错,这是我喜欢的。
这个问题来自我之前的问题: