在Sequel中,如果你有一个名为MyModel的Model类,你可以这样做:
#make MyModel instance
row = MyModel.new(column1, column2)
#save it to the database Sequel is connected to
row.save
但是,如果您要保存重复的主键,“row.save”将失败。
我正在寻找一种方法,如果主键不重复,则会为数据库保存一个值而不保存任何内容,否则会失败。
我查看了instance methods for Sequel Model,但我还没找到我要找的东西。有没有办法可以做到这一点?
答案 0 :(得分:1)
之前我没有使用过Sequel,但是你总是可以用一个开始/救援块来保存调用,只是在没有做任何事情的情况下吞下错误(你几乎总是想做一些事情)。
<form id="payment" name="payment" method="post" action="https://sci.interkassa.com/" enctype="utf-8">
...
<input type="hidden" name="ik_am_t" value="payway" />
</form>
<input type="submit" id="submitButton" value="ОПЛАТИТЬ" id="sub"/>
注意:您可能需要上述begin
row = MyModel.new(col1, col2)
row.save
rescue Sequel::DatabaseError => e
# handle error here
end
以外的其他内容。
答案 1 :(得分:0)
Sequel区分新创建的Model对象和从数据库中提取的Model对象 - 即使它们包含相同的数据。例如,如果我们得到这样的记录,保存到数据库将成功:
row = MyModel.where(:column1 => column1, :column2 => column2)
row.save
#save succeeds
如果我们创建一个具有相同值的新对象并将其保存到数据库,则保存将失败:
row = MyModel.new(column1, column2)
row.save
#save returns duplicate primary key error
要更新数据库中的值而不会出现重复的主键错误,请使用相关主键(如果存在)获取记录,修改它,然后保存。