Squeryl:如果不存在则插入?

时间:2013-04-25 04:04:20

标签: insert squeryl

如果使用Squeryl的条目尚不存在,我该如何插入?

如果在已经存在的元组上执行了insert语句,我试图捕获PSQLException,但是它不起作用(PSQLException没有被捕获)。事实上,告诉Squeryl不要插入已存在的元组会更好。这就是我要搜索的内容。

2 个答案:

答案 0 :(得分:2)

不幸的是,如果您使用Postgres,如果发生异常,您将无法继续处理。这里有一个非常好的讨论:https://groups.google.com/forum/?fromgroups=#!topic/squeryl/zaflXRra0qg

要执行您要查找的内容,您可能需要首先发出一个选择以查找已存在的ids,并将其从要插入的项目中删除。

答案 1 :(得分:0)

你根本不想在DB中存在相同的元组,或者只是那个squeryl不会插入它们?

在第一种情况下,只需在该元组上添加唯一约束。例如:

on(myTable)(e => declare(
    columns(e.name, e.year) are (indexed("myIndex"), unique)
))

此代码将放置在val myTable = table[MyTable]等表定义附近。我还在这个元组上添加了一个索引,你可以根据需要删除这段代码。