如何维护数据库表中的计数列

时间:2014-07-08 09:23:18

标签: sql postgresql

我在这里寻求你的帮助,因为我遇到了与postgresql数据库或任何数据库软件有关的问题。

情况是:

我有一张桌子

    myTable(col1,col2,col3,count)
    #col1 is the primary key
    #count shows how many times row (col1,col2,col3) is inserted into the table

举个例子:

    col1  col2  col3  count
    1     hi    true  1 
    2     ok    true  2 
    3     no    false 2

当要将新行插入此现有表

    Value (1,hi,true) #whose combination is already existed in the original table

然后行onw的计数应该加1,结果如下表

    col1  col2  col3  count
    1     hi    true  2 
    2     ok    true  2 
    3     no    false 2

如何在sql中优雅地实现这一点?或者更具体地说是postgresql的语法

非常感谢:)

问候

2 个答案:

答案 0 :(得分:0)

最佳解决方案可能是在桌面上添加insert trigger

因此,您比较inserted表的值与实际表中已有的值。

如果匹配,则只需执行简单的update语句即可增加计数。

这是解释triggers

的linq 祝你好运

保罗。

答案 1 :(得分:0)

也许您想首先为(col1, col2, col3)添加唯一约束。

create index myTable_uk01 on myTable(col1, col2, col3);

现在,您的表格不允许重复的行,这意味着col1col2col3的值都是相同的。

然后先尝试insert。如果insert成功,那就没问题。如果insert失败,那么您应该发出update命令,如下所示:

update myTable
set count = count + 1
where col1 = :col1 and col2 = :col2 and col3 = :col3;

其中:col1:col2col3是您尝试insert的记录中的值。