使用cfscript,尝试设置新插入的问题的ID,以便我可以在我的答案插入中使用它来构建关系。我已经在cfscript之外完成了这一百万次。 setName似乎是调用以创建查询名称的正确方法。
我收到qryQuestion中不存在“theQuestionID”的错误
i = 1;
while ( structKeyExists( form, "question" & i ) )
{
q = new Query();
q.setDatasource("kSurvey");
q.setName("qryQuestion");
q.setSQL("
set nocount on
insert into question (question)
values('#form["question#i#"]#')
select @@IDENTITY AS theQuestionID
set NOCOUNT off
");
q.execute();
writeOutput("Question"&i&"<br>");
j = 1;
while ( structKeyExists( form, "question" & i & "_answer" & j) ) {
q = new Query();
q.setDatasource("kSurvey");
q.setSQL("
insert into answer (answer,questionid)
values('#form["question#i#_answer#j#"]#',#qryQuestion.theQuestionID#)
");
q.execute();
writeOutput("Answer"&j&"<br>");
j++;
}
i++;
}
答案 0 :(得分:3)
有一个更好的方法来实现这一点,而无需选择@@ identity(这本身不是从sql server获取它的最佳方法,使用scope_identity是在sql server中执行此操作的最佳实践方法。{{ 3}}
幸运的是,ColdFusion让这更容易:
<cfscript>
insertQuery = new query();
insertQuery.setDatasource("datasourcename");
insertQuery.setSql("insert into contact(firstname, lastname)
values('ryan','anklam')");
result = insertQuery.Execute();
theKey = result.getPrefix().generatedkey;
</cfscript>