本文主要讨论PostgreSQL中大小写不敏感存在的问题。
默认情况下,PostgreSQL会将列名和表名全部转换为小写状态。
图1 Person与person
如图1所示,我们创建表person,其中包含name列。然后插入一条记录。执行SELECT查询时,使用列名Name和表名Person而不是name和person,发现仍然可以正常获取刚刚插入表person中的记录。
图2 创建表Person?
此时如果我们再想创建表Person,会得到一个错误,因为此时PostgreSQL实际上把表名从Person转换成了person。由于已经存在表person,所以会报错。
通常情况下,这种大小写不敏感是很方便的,但是当我们想创建大小写敏感的表名和列名(需要使用双引号)时,会产生一些问题。