我有一个代码可以插入一行并从中检索生成的键。但是,它不能与SQL Server一起使用。我进行了研究,似乎该列需要IDENTITY
属性。
不过,我已经在sql server中使用Sequence来设置该列的属性。它从1开始,递增1,最大值是某个值。我的查询使用序列插入如下行:
INSERT INTO event_master (event_id, user_id, type, detail, status, update_timestamp)
VALUES (NEXT VALUE FOR event_master_id_seq, ?,?,?,?,?)
有没有任何方法可以使用这种格式来检索生成的值(在我的例子中是event_id(?还是我必须有IDENTITY
才能工作?
我想把它作为这个的副本来关闭,但这个问题没有解决或询问使用序列而不是标识列。此外,我还想清楚地表明,这适用于多行(以防您计划使用标量变量(。
DECLARE @event_ids TABLE(event_id int);
INSERT INTO dbo.event_master (event_id, ... other cols)
OUTPUT inserted.event_id INTO @event_ids
VALUES (NEXT VALUE FOR event_master_id_seq, ... other vals);
SELECT event_id FROM @event_ids;
顺便说一句,我真的希望您不要使用某些应用程序中的?
占位符,您应该真正使用显式和强类型参数。我知道这在Java中比更现代的语言更难,但例如,我看到了这个答案。