gpt4 book ai didi

oracle - 在 Oracle SQL Insert 语句中返回自动增量值?

转载 作者:行者123 更新时间:2023-12-05 07:28:29 26 4
gpt4 key购买 nike

我有一个应该返回自动递增列值的插入语句。这是我的插入示例:

myQuery = new query();
myQuery.name = "insertRec";
myQuery.setDatasource("db");
mySQL = "
INSERT INTO myTable (
First, Last, Email, ActionDate
)VALUES(
:first, :last, :email, :actiondt
)
";

myQuery.setSQL(mySQL);
myQuery.addParam(name="first", cfsqltype="cf_sql_varchar", value="#trim(form.first)#", maxlength="50");
myQuery.addParam(name="last", cfsqltype="cf_sql_varchar", value="#trim(form.last)#", maxlength="50");
myQuery.addParam(name="email", cfsqltype="cf_sql_varchar", value="#trim(form.email)#", maxlength="320");
myQuery.addParam(name="actiondt", cfsqltype="cf_sql_timestamp", value="#now()#");
myQuery.execute().getResult();
//result = myQuery.execute().getResult(); This line is commented because I was getting error message that test variable is not defined. Not sure why since test is declared and equals to myQuery.execute().getResult();

我运行这段代码后记录会出现在表格中。结果集如下所示:

RecordID  First  Last       Email        ActionDt
7 John Woss jwoss@gmail.com 16-NOV-18

如您所见,RecordID(自动递增)就在那里。我想在 myQuery 完成后获得该值。如何实现?

最佳答案

https://stackoverflow.com/a/34894454/432681 中所述,您可以通过相关序列上的 SELECT 检索自动递增的 ID。

因此,您的查询应如下所示:

mySQL = "
INSERT INTO myTable (
First, Last, Email, ActionDate
)VALUES(
:first, :last, :email, :actiondt
);
SELECT "sequenceForMyTable".currval from dual;
";

上面的链接答案中也描述了如何获取序列的名称。

https://stackoverflow.com/a/25268870/432681 中概述了第二种方法还有mentioned in the CFML documentation ,它表示您可以使用 getPrefix() 函数来访问生成的 key 。请注意,在这种情况下,resultexecute() 方法返回的对象,而不是 getResult()(因为查询没有返回一个结果集)。因此,对于您的示例,这是获取 ID 的方法:

result = myQuery.execute();
newID = result.getPrefix().generatedKey;

关于oracle - 在 Oracle SQL Insert 语句中返回自动增量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53340890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com