我在这里寻求你的帮助,因为我遇到了与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的语法
非常感谢:)
问候
答案 0 :(得分:0)
最佳解决方案可能是在桌面上添加insert trigger
。
因此,您比较inserted
表的值与实际表中已有的值。
如果匹配,则只需执行简单的update
语句即可增加计数。
这是解释triggers
的linq 祝你好运保罗。
答案 1 :(得分:0)
也许您想首先为(col1, col2, col3)
添加唯一约束。
create index myTable_uk01 on myTable(col1, col2, col3);
现在,您的表格不允许重复的行,这意味着col1
,col2
,col3
的值都是相同的。
然后先尝试insert
。如果insert
成功,那就没问题。如果insert
失败,那么您应该发出update
命令,如下所示:
update myTable
set count = count + 1
where col1 = :col1 and col2 = :col2 and col3 = :col3;
其中:col1
,:col2
,col3
是您尝试insert
的记录中的值。