我有一个使用Sequel gem的Ruby脚本来访问我的Postgres数据库。
目前,这是我的电话:
@db[:items].insert_conflict.insert(:sku => sku, :name => itemName)
dbItem = Item.where(:sku => sku).first
dbPrice = Price.create(:price => foundPrice, :quantity => quantity, :status => status)
dbItem.add_price(dbPrice)
store.add_price(dbPrice)
不幸的是,如果插入了密钥,insert_conflict.insert将返回密钥,如果存在,则返回nil。否则,我将能够使用一次调用(以获取已插入或已存在的实际对象,见第2行)。有没有其他方法可以将此减少到一个电话?
至于最后三个电话,我相信因为我在三个不同的模式之间添加关系,所以没有办法减少这个。但是为了以防万一,我将其包括在内。