首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PSQL中的条件更新语句

PSQL中的条件更新语句
EN

Stack Overflow用户
提问于 2016-06-10 11:47:50
回答 1查看 1.2K关注 0票数 1

我想在我的网站上做一个有条件的更新。每当用户单击某个链接时,数据库中的全局计数器变量就会自动递增。

复杂的是,当柜台数量超过我有记录的网站数量,我希望计数器回到1。我有一个更新声明,但它不工作,我不明白为什么。

代码语言:javascript
复制
#Increment global counter, set it back to one when it exceeds the number of websites on record
cursor.execute("UPDATE url_reroute_counter SET counter_num = "+
                    " CASE"+
                        " WHEN counter_num>(SELECT count(*) FROM url_reroute_targeturl)"+ 
                            " THEN counter_num = 1"+
                        " ELSE"+
                            " counter_num = counter_num+1"+
                    " END"+
                    " WHERE name_of_counter = 'url_count'")`

运行此代码将获得以下异常:

代码语言:javascript
复制
django.db.utils.ProgrammingError: column "counter_num" is of type integer but expression is of type boolean
    LINE 1: UPDATE url_reroute_counter SET counter_num =  CASE WHEN coun...
                                                          ^
    HINT:  You will need to rewrite or cast the expression.

我不习惯在任何SQL语言中使用条件词,所以这里的任何hlep都是值得赞赏的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-10 12:25:40

您的查询应该如下

代码语言:javascript
复制
cursor.execute("UPDATE url_reroute_counter SET counter_num = "+
                " CASE"+
                    " WHEN counter_num>(SELECT count(*) FROM url_reroute_targeturl)"+ 
                        " THEN 1"+
                    " ELSE"+
                        " counter_num+1"+
                " END"+
                " WHERE name_of_counter = 'url_count'")`

和BTW,在一个多行python字符串中,您不需要所有这些+符号。这个:https://stackoverflow.com/a/10660443/267540

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37747513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档