天天看點

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**********************************************************/