sql - Postgres 使用默认列表达式进行冲突更新
问题描述
如果列具有默认值表达式
create table A (
...
b numeric default cos(54)
)
语句是否可以on conflict
使用默认表达式重置列而不
- 复制粘贴它自己的表达式
- 在自己编写排除记录时使用默认值作为值
即只是从更新语句中准确引用默认值。就像是
on conflict
update set b = default
甚至
on conflict
update set b = case when some_condition then default else A.b end
解决方案
是的,您可以DEFALT
在 upsert 中使用该值:
INSERT INTO t (foo,bar) VALUES (1,2)
ON CONFLICT (foo) DO UPDATE
SET bar = DEFAULT;
演示:db<>fiddle
推荐阅读
- python - 熊猫:从另一列中选择两个特定值之间的最高值和最低值
- ios - 适用于 iPhone 8 但不适用于 iPhone 8 Plus 的约束
- java - 如何将课程添加到列表中?
- react-native - 如何在安装期间/在应用程序启动之前为 React Native 应用程序请求权限?
- cakephp - cakephp 将 2.xx 升级到 3.x
- google-ads-api - 找不到google adwords api
- react-native - 使用 redux 在 react-native 中获取 API
- django - 如何扩展 Django Admin 模型 readonly_fields 而不必指定所有模型字段(但仍然可以看到它们)
- rsync - rsync 没有从远程服务器复制我的文件
- bash - Bash:用日期显示纳秒