---测试数据
--生成测试数据表结构
create table A
(
a_id int identity(100,1),
dname varchar(30),
dates datetime default getdate()
)
GO
create table B
(
b_id int identity(10,1),
a_id int,
coutry varchar(30),
bdates datetime default getdate()
)
GO

create table C
(
c_id int identity(1,1),
b_id int,
ac_id int,
cname varchar(30),
cdates datetime default getdate()
)
go
create table E
(
E_id int identity(11000,1),
E_a varchar(30),
E_b varchar(30),
E_c varchar(30),
edates datetime default getdate()
)
GO
insert into E(E_a,E_b,E_c)
select 'A5','B5','C5'
union all select 'A6','B6','C6'
union all select 'A7','B7','C7'
union all select 'A8','B8','C8'
union all select 'A9','B9','C9'
union all select 'A10','B10','C10' 
--创建触发器 
drop trigger trg_A
go
create trigger trg_A
on A
for insert
as
begin
insert into B(a_id) select a_id from inserted
insert into C(b_id) select @@identity
end
go
--向A表插入数据,实现触发
insert into A(a_id) select 1
--查看触发器执行结果
select * from A
select * from B
select * from C

/*---创建事务
geovindu@163.com 缔友计算机信息技术有限公司
涂聚文 www.dusystem.com
*/
GO
CREATE PROCEDURE sp_InsertMm
@dname varchar(20),
@coutry nvarchar(50),
@cname varchar(50)
AS
DEClARE @AID int,@BID int
-- 创建事务Mm
BEGIN TRANSACTION InsertSome
INSERT INTO A (dname)
VALUES (@dname)
SET @AID = @@IDENTITY -- 得到刚才增加的Id
INSERT INTO B (a_id, coutry)
VALUES (@AID,@coutry)
SET @BID = @@IDENTITY
INSERT INTO C (b_id,ac_id,cname)
VALUES (@BID,@AID,@cname)
-- 如果有错误,回滚事务,否则提交事务
IF @@ERROR > 0
ROLLBACK TRANSACTION InsertSome
ELSE
COMMIT TRANSACTION InsertSome
GO
exec sp_InsertMm 'A2','B2','C2'
select * from A
select * from B
select * from C
select * from E
--删除测试环境
drop trigger trg_A
drop table A,B,C,E
drop procedure sp_InsertMm
drop procedure sp_InsertMm1
--循环的话,你可以用while,也可以用go,如:
--1)
CREATE PROCEDURE sp_InsertMm1
as
declare @i int,@count int
select @count=count(*) from E
-- select @count
set @i = 11000
while @i<=11000+@count
begin
--操作语句
DECLARE @dname varchar(20),@coutry nvarchar(50),@cname varchar(50)
DEClARE @AID int,@BID int
SELECT @dname=E_a FROM E where E_id=@i
SELECT @coutry=E_b FROM E where E_id=@i
SELECT @cname=E_c FROM E where E_id=@i
-- 创建事务Mm
BEGIN TRANSACTION InsertSome
INSERT INTO A (dname)
VALUES (@dname)
SET @AID = @@IDENTITY -- 得到刚才增加的Id
INSERT INTO B (a_id, coutry)
VALUES (@AID,@coutry)
SET @BID = @@IDENTITY
INSERT INTO C (b_id,ac_id,cname)
VALUES (@BID,@AID,@cname)
-- 如果有错误,回滚事务,否则提交事务
IF @@ERROR > 0
ROLLBACK TRANSACTION InsertSome
ELSE
COMMIT TRANSACTION InsertSome
set @i=@i+1
end
Go
exec sp_InsertMm1
--2)
declare @i int
set @i=0
xloop:--标签
--操作
set @i=@i+1
if @i<100 --判断,当@i小于100的时候,回到操作执行处,继续执行
goto xloop
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/16436858/viewspace-608434/ ,如需转载,请注明出处,否则将追究法律责任。