天天看点

sql server 2000 一个表的数据插入到三个相关联表中,一条一条的插入

1/**//**********************************************************

2测试数据 sql server 2000 一个表的数据插入到三个相关联表中,一条一条的插入

3---涂聚文 缔友计算机信息技术有限公司 软件工程师 [email protected] www.dupcit.com

4---捷为工作室 涂聚文 www.dusystem.com

5**********************************************************/

6---测试数据

7--生成测试数据表结构

8 create   table   A

9(   

10    a_id   int identity(100,1),

11    dname varchar(30),

12    dates datetime default getdate()

13)

14 GO

15 create   table   B

16(

17    b_id   int   identity(10,1),

18    a_id   int,

19        coutry varchar(30),

20        bdates datetime default getdate()

21)

22GO

23

24

25create   table   C

26(

27    c_id   int   identity(1,1),

28    b_id   int,

29        ac_id   int,

30        cname varchar(30),

31        cdates datetime default getdate()

32)

33 go

34create table E

35(

36     E_id int   identity(11000,1),

37     E_a varchar(30),

38     E_b varchar(30),

39     E_c varchar(30),

40     edates datetime default getdate()

41)

42GO

43

44insert into E(E_a,E_b,E_c)

45              select 'A5','B5','C5'

46union   all   select 'A6','B6','C6'

47union   all   select 'A7','B7','C7'

48union   all   select 'A8','B8','C8'

49union   all   select 'A9','B9','C9'

50union   all   select 'A10','B10','C10'

51

52 --创建触发器

53

54drop trigger trg_A

55go

56 create   trigger   trg_A

57 on   A

58 for   insert

59 as

60 begin

61          insert   into   B(a_id)   select   a_id   from   inserted

62          insert   into   C(b_id)   select   @@identity

63 end

64 go

65  

66 --向A表插入数据,实现触发

67 insert   into   A(a_id)   select   1

68  

69 --查看触发器执行结果

70 select   *   from   A

71 select   *   from   B

72 select   *   from   C

73  

74

75/**//*---创建事务

[email protected] 缔友计算机信息技术有限公司

77涂聚文 www.dusystem.com

78*/

79

80GO

81

82CREATE   PROCEDURE   sp_InsertMm

83 @dname   varchar(20),

84 @coutry   nvarchar(50),

85 @cname varchar(50)

86 AS

87 DEClARE   @AID   int,@BID int  

88 --   创建事务Mm

89 BEGIN   TRANSACTION   InsertSome

90 INSERT   INTO   A   (dname)

91 VALUES   (@dname)    

92 SET   @AID = @@IDENTITY   --   得到刚才增加的Id    

93 INSERT   INTO   B   (a_id, coutry)

94 VALUES   (@AID,@coutry)

95 SET   @BID = @@IDENTITY

96    INSERT   INTO C (b_id,ac_id,cname)

97 VALUES   (@BID,@AID,@cname)

98  

99 --   如果有错误,回滚事务,否则提交事务

100 IF   @@ERROR   >   0

101 ROLLBACK   TRANSACTION   InsertSome

102 ELSE

103 COMMIT   TRANSACTION   InsertSome  

104GO

105

106exec sp_InsertMm 'A2','B2','C2'

107

108select * from A

109select * from B

110select * from C

111select * from E

112 --删除测试环境

113 drop   trigger   trg_A

114 drop   table   A,B,C,E

115 drop procedure sp_InsertMm

116drop procedure sp_InsertMm1

117

118--循环的话,你可以用while,也可以用go,如:

119 --1)

120CREATE   PROCEDURE   sp_InsertMm1

121as

122 declare   @i   int,@count int

123 select @count=count(*) from E

124 -- select @count

125

126 set   @i   =   11000   

127 while   @i<=11000+@count

128 begin

129     --操作语句

130DECLARE   @dname   varchar(20),@coutry   nvarchar(50),@cname varchar(50)

131DEClARE   @AID   int,@BID int

132SELECT @dname=E_a FROM E where E_id=@i

133SELECT @coutry=E_b FROM E where E_id=@i

134SELECT @cname=E_c FROM E where E_id=@i

135 --   创建事务Mm

136 BEGIN   TRANSACTION   InsertSome

137 INSERT   INTO   A   (dname)

138 VALUES   (@dname)    

139 SET   @AID = @@IDENTITY   --   得到刚才增加的Id    

140 INSERT   INTO   B   (a_id, coutry)

141 VALUES   (@AID,@coutry)

142 SET   @BID = @@IDENTITY

143    INSERT   INTO C (b_id,ac_id,cname)

144 VALUES   (@BID,@AID,@cname)

145 --   如果有错误,回滚事务,否则提交事务

146 IF   @@ERROR   >   0

147 ROLLBACK   TRANSACTION   InsertSome

148 ELSE

149 COMMIT   TRANSACTION   InsertSome

150      set   @i=@i+1

151 end

152 Go

153

154exec sp_InsertMm1

155

156 --2)

157 declare   @i   int

158 set   @i=0

159 xloop:--标签

160 --操作

161 set   @i=@i+1

162  

163 if   @i<100 --判断,当@i小于100的时候,回到操作执行处,继续执行

164 goto   xloop

165

166/**//**********************************************************

167测试数据一个表的数据插入到三个相关联表中,一条一条的插入

168---涂聚文 缔友计算机信息技术有限公司 软件工程师 [email protected] www.dupcit.com

169---捷为工作室 涂聚文 www.dusystem.com

170**********************************************************/