插入和更新一条语句
insert into user_setting values (100,'test','ok') on conflict(user_id,set_key) do update set set_value='ok';
要求conflict()中的字段,必须是唯一索引的参与字段,可以是多个字段,不能多也不能少,必须和索引一致。否则会报错
update 更新是否成功不影响变量 FOUND,只影响ROW_COUNT
如果不加"begin....commit/rollback",每一个SQL语句都是一个transaction,都有自己的transaction ID:
关于存储过程,其实现在11.0以前说的存储过程是函数,11.0以后才支持存储过程
函数内部不能使用事务,存储过程内部可以使用事务
null参与运算 :
使用 coalesce函数之后便可处理null的问题:
music=# select coalesce(num1,0)+coalesce(num2,0) from test_null
null字段不占用空间 而 mysql的null是占用空间的。所以为空为0的情况尽量用null
https://www.cnblogs.com/stephen-liu74/archive/2012/06/06/2312759.html
POSTGRESQL 高级特性
https://blog.youkuaiyun.com/MyySophia/article/details/82317117
关于事务
https://my.oschina.net/liuyuanyuangogo/blog/497929
事务中的显式控制
https://my.oschina.net/liuyuanyuangogo/blog/499460#OSC_h2_2
索引
https://blog.youkuaiyun.com/jubaoquan/article/details/78850899
分区表
pg10: https://blog.youkuaiyun.com/pg_hgdb/article/details/80475234
pg11:https://blog.youkuaiyun.com/horses/article/details/83538832