Sybase INSERT INTO 与身份字段?

Sybase INSERT INTO with Identity field?

我还没有在任何地方看到这个确切的问题,因此我开始认为这是不可能的,我正在以错误的方式解决这个问题。

我正在尝试使用 IDENTITY 创建一个带有自动递增唯一键的临时文件 table,然后使用 INSERT INTO (fields...) SELECT @@identity, ... type 语句,但我无法让它工作。

CREATE TABLE #someTemp (
    id INT IDENTITY UNIQUE,
    foo1 VARCHAR (20),
    foo2 VARCHAR (80),
    rand NUMERIC
)

INSERT INTO (id, foo1, foo2, rand)
SELECT id = @@identity, v.foo_bar, v.bar_foo, v.list
FROM #otherTemp a
INNER JOIN some_table v
    ON v.id = a.id
    AND v.suu = a.ooo
WHERE a.x = 'gotcha'

我的代码看起来或多或少像这样,但是它抱怨非法的身份值,我也尝试过只使用 @@identity 而没有 id =,以及其他一些迭代。

现在我知道我可以做这样的事情了:

SELECT @@identity, blah, foo, bar
INTO #aTemp
FROM ...

INSERT INTO #someTemp (id, foo1, foo2, rand)
SELECT * FROM #aTemp

这会起作用,但在我的例子中,我有 1 到 5 次使用类似 selects/froms 执行此查询的迭代,它们都需要使用唯一键连接在一起以供以后计算,并且我不知道它会被执行多少次,所以我需要 select 每一个都进入他们自己的临时 table,然后稍后将它们插入回 #someTemp,我会如果有办法做到这一点,我不想走这条路。

如果这已经有了答案,请link,或提供尽可能多的细节和示例。

谢谢!

你为什么不直接这样插入?

INSERT INTO (foo1, foo2, rand)
SELECT v.foo_bar, v.bar_foo, v.list
FROM #otherTemp a INNER JOIN
     some_table v
     ON v.id = a.id AND v.suu = a.ooo
WHERE a.x = 'gotcha';

省略 id。它将自动分配。