PostgreSQL中的JSON类型是事务的一部分吗?

PostgreSQL中的JSON类型是事务的一部分吗?,json,postgresql,transactions,postgresql-9.3,Json,Postgresql,Transactions,Postgresql 9.3,只想知道JSON类型是否也在事务下。例如,如果我启动了一个事务,该事务同时插入列JSON类型和其他类型的数据,并且如果发生了错误,它还会回滚JSON内容吗?在PostgreSQL中,一切都是事务性的,崩溃安全的,除非有明确的文档记录 PostgreSQL的事务在元组上运行,而不是在单个字段上运行。数据类型是不相关的。在PostgreSQL中不可能实现非事务性的数据类型。(串行“数据类型”只是带有默认值的整数类型的包装器,有点特殊) 只有少数事物在事务方面有特殊的行为——序列、建议锁等——并且在这

只想知道JSON类型是否也在事务下。例如,如果我启动了一个事务,该事务同时插入列JSON类型和其他类型的数据,并且如果发生了错误,它还会回滚JSON内容吗?

在PostgreSQL中,一切都是事务性的,崩溃安全的,除非有明确的文档记录

PostgreSQL的事务在元组上运行,而不是在单个字段上运行。数据类型是不相关的。在PostgreSQL中不可能实现非事务性的数据类型。(串行“数据类型”只是带有默认值的整数类型的包装器,有点特殊)

只有少数事物在事务方面有特殊的行为——序列、建议锁等——并且在这种情况下,它们都有非常清晰的文档记录


请注意,这会带来一些您可能无法立即预料的限制。最重要的是,它必须在修改某个值时复制该值(有时,在修改同一元组中的其他值时)。它无法在适当的位置更改字段。因此,如果您在字段中有一个5MB
json
文档,并且您更改了一个整数值,那么必须复制整个json文档并用更改后的值写出。PostgreSQL随后将出现,并将旧副本标记为可重复使用的可用空间。

是的,当然是。为什么你不这么认为呢?因为在NoSql数据库中,MongoDB事务是不受支持的,所以我们将第一次从postgreSql开始。若上述情况属实,我找不到确切的文字,所以我问。无论如何,感谢您的确认。Postgres不是一个“NoSQL”数据库,它是一个符合ACID的SQL数据库,恰好支持一些打破关系概念的NoSQL数据类型,但不支持ACID原则。