日期:2014-05-18 浏览次数:20394 次
go create trigger test on A for insert as inert B(col1,col2,....) select col1,col2,....from inserted --触发器吧
------解决方案--------------------
插入前找出表A最大的自增号,插入后将所有大于这个自增号的记录连同其他数据插入表B。
比如表A自增字段为ID,那么:
declare @a int
select @a=max(id) from 表A
insert into 表A values ()... --插入表A记录
insert into 表B
select * from 表A
where id>@a --将表A所有ID大于@a的记录插入表B
------解决方案--------------------
--有两张表,表A和表B,可以理解为:表A主表,表B附表 --向 表A 插入一条数据,取出自增长@@IDENTITY,和其他一些信息,插入 表B。 --目前需要向 表A 插入 很多数据,不要用循环,有什么好的方法? DECLARE @MID INT,@IDENT INT SELECT @MID=MAX(ID) FROM tbA INSERT INTO tbA(...) SELECT ... UNION ALL SELECT ... UNION ALL ... SET @IDENT=SCOPE_IDENTITY() INSERT INTO tbB(...) SELECT ... FROM tbA WHERE ID BETWEEN @MID+1 AND @IDENT