sql server 2000 一个表的数据插入到三个相关联表中,一条一条的插入
1
/**********************************************************
2
测试数据 sql server 2000 一个表的数据插入到三个相关联表中,一条一条的插入
3
---涂聚文 缔友计算机信息技术有限公司 软件工程师 geovindu@163.com 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
)
22
GO
23
24
25
create 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
34
create 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
)
42
GO
43
44
insert into E(E_a,E_b,E_c)
45
select 'A5','B5','C5'
46
union all select 'A6','B6','C6'
47
union all select 'A7','B7','C7'
48
union all select 'A8','B8','C8'
49
union all select 'A9','B9','C9'
50
union all select 'A10','B10','C10'
51
52
--创建触发器
53
54
drop trigger trg_A
55
go
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
/*---创建事务
76
geovindu@163.com 缔友计算机信息技术有限公司
77
涂聚文 www.dusystem.com
78
*/
79
80
GO
81
82
CREATE 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
104
GO
105
106
exec sp_InsertMm 'A2','B2','C2'
107
108
select * from A
109
select * from B
110
select * from C
111
select * from E
112
--删除测试环境
113
drop trigger trg_A
114
drop table A,B,C,E
115
drop procedure sp_InsertMm
116
drop procedure sp_InsertMm1
117
118
--循环的话,你可以用while,也可以用go,如:
119
--1)
120
CREATE PROCEDURE sp_InsertMm1
121
as
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
--操作语句
130
DECLARE @dname varchar(20),@coutry nvarchar(50),@cname varchar(50)
131
DEClARE @AID int,@BID int
132
SELECT @dname=E_a FROM E where E_id=@i
133
SELECT @coutry=E_b FROM E where E_id=@i
134
SELECT @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
154
exec 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
---涂聚文 缔友计算机信息技术有限公司 软件工程师 geovindu@163.com www.dupcit.com
169
---捷为工作室 涂聚文 www.dusystem.com
170
**********************************************************/

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!