我插入到两个表中。进入第一张桌子会有一个新的'物品'。有很多领域,但为了简单起见,我只会告诉你我需要什么。这是我的ColdFusion页:将查询中的自动增量作为变量在另一个查询中使用
<cfquery>
INSERT INTO my_item_table (itemid, a bunch of other stuff)
VALUES (itemid_sequence.nextval, a bunch of other stuff)
</cfquery>
我的问题是我要插入自动增加为itemid的值到另一个表,文件附件表。同样的ColdFusion页:
<cfquery>
INSERT INTO my_attachments_table (attachno, itemid, filename)
VALUES (attachment_sequence.nextval, **AUTO-INCREMENT VALUE HERE**, '#url.fileName#')
</cfquery>
我知道我可以查询项目表对于刚刚进入第一个表中的值,但即使它是不太可能,有可能是用户输入不唯一的,这意味着相同字段的查询可能会返回多行。在这种情况下,我无法获得itemid。在查询中创建的itemid是唯一的唯一标识符。
我的问题是:有没有办法将auto = increment设置为查询内的值,以便我可以在外部使用它?如果没有,你会如何建议获得我的itemid?谢谢。
我不是Oracle专家 - 听起来Danny知道他在说什么 - 但是当您在一个查询中插入CF时,然后在下一个查询中获取自动增量的结果时,您会遇到并发问题(另一个请求同时增加了字段)。确保并使用交易 - 或者丹尼建议的存储过程 - 以避免这种可能性。 – 2012-08-07 13:12:26
或者,您可以在插入查询中获取增量值*,并将其作为结果返回。 – 2012-08-07 13:13:42
我该如何将它设置为一个变量?据我所知,你会cfoutput这个查询,但没有列名定义引用。即这将如何工作? –
2012-08-07 13:14:03