【发布时间】:2011-09-14 12:19:50
【问题描述】:
我有以下表格:
tbl_workshop
id int identity
Name nvarchar(10)
Address nvarchar(40)
tbl_workshop_temp
id int identity
code int
InsUpkey smallint
我有以下陈述
insert into tbl_workshop
(Name,Address)
values('x','y')
select @@identity -- My problem is here
我也有以下插入触发器:
create trigger InsertedWorkshop
on tbl_workshop
for insert
as
insert into tbl_workshop_temp
(code,InsUpKey)
select id,1
from inserted
当select @@identity 语句运行时,我得到tbl_workshop_temp 中插入行的id,而不是id 中插入tbl_workshop
我知道我必须使用scope_identity,但我无法更改代码。我只能改变我的触发器。
我现在该怎么办?请帮帮我。
【问题讨论】:
-
我能想到一个可行的办法,但你真的应该改变你的代码。为什么无法更改它以调用正确的函数?
-
因为代码是别人用VB6写的。我可以只更改数据库。
-
此 SQL 语句在您无权访问的编译代码中是什么?确实,您需要对此进行更改,但假设您正在寻找短期解决方案,我将发布我的(可怕的)想法。
-
@Raymond 下次不要让“其他人”将糟糕的临时 SQL 放入他们的应用程序 - 鼓励/坚持存储过程!
-
是的,你是对的。我会做的。
标签: sql-server sql-server-2000 identity