我正在使用 JMS 队列读取数据并将数据插入到由 grails 创建的 postgres 表中。问题是获取下一个序列值。我以为我已经通过以下语句找到了解决方案(通过将“DEFAULT”放在 ID 应该去的地方),但它不再有效。我一定改变了什么,因为我需要重新创建表格。解决此问题的最佳方法是什么?
ps = c.prepareStatement("插入 xml_test (id, version, xml_text) 值(默认值,0,?)”);
更新:
为了响应建议的解决方案,我执行了以下操作:
将其添加到域中:
class XmlTest {
String xmlText
static constraints = {
id generator:'sequence', params:[name:'xmltest_sequence']
}
}
并将插入语句更改为以下内容:
ps = c.prepareStatement("INSERT INTO xml_test (id, version, xml_text)
VALUES (nextval('xmltest_sequence'), 0, ?)");
但是,当我运行该语句时,出现以下错误:
[java] 1 org.postgresql.util.PSQLException:错误:关系“xmltest_sequence”不存在
有什么想法吗?
最佳答案
在您的情况下,您可以使用 nextval 函数获取 PostgreSQL 中任何序列的值:
INSERT INTO xml_test (id, version, xml_text) VALUES (nextval('sequence_name_for_this_table'), 0, ?);
在您的 grails 域类中,您可以选择序列名称:
static mapping = {
id generator:sequence, params:[name:'sequence_name_for_this_table']
}
关于sql - 如何设置插入到具有下一个序列号的 grails 创建的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2822623/