我想在PostgreSQL db上执行以下更新查询,但它不起作用并且出现语法错误。
查询如下
update wl_user set role_bitmask= role_bitmask|=1 where email='faisal@gmail.com'
问题似乎出现在|=
运算符中,是否有人知道如何在PostgreSQL中使用| =运算符?
以下是错误。
[Err] ERROR: operator does not exist: integer |= integer LINE 1: ...pdate wl_user set role_bitmask=role_bitmask|=1 where ... ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
答案 0 :(得分:2)
您必须使用role_bitmask= role_bitmask|=1
而不是role_bitmask=role_bitmask|1
,如果您认为|=
做了什么以及|
做了什么,那么这也是有道理的。
澄清一下:PostgreSQL有很多运算符,允许您定义新的运算符。但在你的情况下,这无关紧要有两个原因:
UPDATE ... table ... SET column = { expression | DEFAULT }
。这意味着,=
是强制性的,而不是任何正常运算符。因此,没有|=
也没有&=
。关于你的问题:像role_bitmask= role_bitmask|=1
这样的表达会使每种语言的眉毛都升起: - )
摘要:您必须使用长格式... SET column = colum | bitmask
。