首页 新闻 会员 周边

如何得到刚刚插入的记录的ID

0
悬赏园豆:5 [已解决问题] 解决于 2014-02-14 16:28

insert into [MKT].[dbo].[CampaignCouponRecord] values
(12,'baoj2010000',1,getdate(),'system',getdate(),'system',111,'insert','20140214') output inserted.ID

上面语句执行出错

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near 'output'.

baoj2010的主页 baoj2010 | 初学一级 | 园豆:102
提问于:2014-02-14 13:39
< >
分享
最佳答案
0

1楼和3楼说的极是,

1.  insert语句之后   后跟select @@identity

2.  第二种,就是和3楼一样

收获园豆:3
秋壶冰月 | 大侠五级 |园豆:5903 | 2014-02-14 15:44

这两种什么区别?

baoj2010 | 园豆:102 (初学一级) | 2014-02-14 16:20

@baoj2010: 第一种是最早出现的方式,用起来,没有第二种方便,第一种方式插入之后,还得重新查询,第二种就不需要了!具体内部如何实现的,就不清楚了,如果想对sqlserver深入的话,可以看看<<Microsoft SQL Server 2005技术内幕>>

秋壶冰月 | 园豆:5903 (大侠五级) | 2014-02-14 16:27
其他回答(5)
0

@@IDENTITY

返回最后一个标识值

cenlo | 园豆:583 (小虾三级) | 2014-02-14 13:59

返回最后一个标示,如果返回前又有人插入数据那返回不就错了吗

支持(0) 反对(0) baoj2010 | 园豆:102 (初学一级) | 2014-02-14 16:18
0

写个存储过程

wolfy | 园豆:2636 (老鸟四级) | 2014-02-14 14:01
0

都别闹``

insert into [MKT].[dbo].[CampaignCouponRecord] output inserted.ID values
(12,'baoj2010000',1,getdate(),'system',getdate(),'system',111,'insert','20140214') 

output要在values之前```在into之后

收获园豆:2
吴瑞祥 | 园豆:29449 (高人七级) | 2014-02-14 15:15
0
USE tempdb;
IF OBJECT_ID('dbo.Orders','U') IS NOT NULL DROP TABLE dbo.Orders
CREATE TABLE dbo.Orders
(
orderid INT NOT NULL,
orderdate DATE NOT NULL,
empid INT NOT NULL,
custid VARCHAR(5) NOT NULL,
qty INT NOT NULL,
CONSTRAINT PK_Orders PRIMARY KEY(orderid)
);
INSERT INTO dbo.Orders(orderid,orderdate,empid,custid,qty) OUTPUT inserted.orderid VALUES (30001,'20070802',3,'A',10) 
Nicolas.Nick | 园豆:232 (菜鸟二级) | 2014-04-01 17:55
0

insert into table

select @@identity

chengeng | 园豆:294 (菜鸟二级) | 2014-12-11 10:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册