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
。它将自动分配。
我还没有在任何地方看到这个确切的问题,因此我开始认为这是不可能的,我正在以错误的方式解决这个问题。
我正在尝试使用 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
。它将自动分配。