· 7 years ago · Sep 25, 2018, 08:26 AM
1create database ql_dangky
2
3USE [QL_dangky]
4GO
5/****** Object: FullTextCatalog [1] Script Date: 10/30/2014 11:26:29 ******/
6CREATE FULLTEXT CATALOG [1]WITH ACCENT_SENSITIVITY = ON
7AUTHORIZATION [dbo]
8GO
9/****** Object: Table [dbo].[MonHoc] Script Date: 10/30/2014 11:26:29 ******/
10SET ANSI_NULLS ON
11GO
12SET QUOTED_IDENTIFIER ON
13GO
14SET ANSI_PADDING ON
15GO
16CREATE TABLE [dbo].[MonHoc](
17 [MaMon] [VARCHAR](10) NOT NULL,
18 [TenMon] [nvarchar](50) NOT NULL,
19 [STC] [SMALLINT] NOT NULL,
20 CONSTRAINT [PK_MonHoc] PRIMARY KEY CLUSTERED
21(
22 [MaMon] ASC
23)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
24) ON [PRIMARY]
25GO
26SET ANSI_PADDING OFF
27GO
28INSERT [dbo].[MonHoc] ([MaMon], [TenMon], [STC]) VALUES (N'M0001', N'Hệ quản trị cơ sở dữ liệu', 4)
29INSERT [dbo].[MonHoc] ([MaMon], [TenMon], [STC]) VALUES (N'M0002', N'Cơ sở dữ liệu', 3)
30INSERT [dbo].[MonHoc] ([MaMon], [TenMon], [STC]) VALUES (N'M0003', N'Tin đại cương', 5)
31INSERT [dbo].[MonHoc] ([MaMon], [TenMon], [STC]) VALUES (N'M0004', N'Toán cao cấp', 4)
32INSERT [dbo].[MonHoc] ([MaMon], [TenMon], [STC]) VALUES (N'M0005', N'Giai thuáºt', 5)
33INSERT [dbo].[MonHoc] ([MaMon], [TenMon], [STC]) VALUES (N'M0006', N'C#', 4)
34/****** Object: Table [dbo].[Lop] Script Date: 10/30/2014 11:26:29 ******/
35SET ANSI_NULLS ON
36GO
37SET QUOTED_IDENTIFIER ON
38GO
39SET ANSI_PADDING ON
40GO
41CREATE TABLE [dbo].[Lop](
42 [MaLop] [VARCHAR](10) NOT NULL,
43 [TenLop] [nvarchar](50) NOT NULL,
44 [SoSV] [INT] NOT NULL,
45 CONSTRAINT [PK_Lop] PRIMARY KEY CLUSTERED
46(
47 [MaLop] ASC
48)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
49) ON [PRIMARY]
50GO
51SET ANSI_PADDING OFF
52GO
53INSERT [dbo].[Lop] ([MaLop], [TenLop], [SoSV]) VALUES (N'ML0001', N'Công nghệ phần má»m', 50)
54INSERT [dbo].[Lop] ([MaLop], [TenLop], [SoSV]) VALUES (N'ML0002', N'Tin địa chất', 52)
55INSERT [dbo].[Lop] ([MaLop], [TenLop], [SoSV]) VALUES (N'ML0003', N'Trắc địa', 60)
56INSERT [dbo].[Lop] ([MaLop], [TenLop], [SoSV]) VALUES (N'ML0004', N'Tin Kinh Tế', 70)
57INSERT [dbo].[Lop] ([MaLop], [TenLop], [SoSV]) VALUES (N'ML0005', N'Dầu khÃ', 80)
58/****** Object: Table [dbo].[SV] Script Date: 10/30/2014 11:26:29 ******/
59SET ANSI_NULLS ON
60GO
61SET QUOTED_IDENTIFIER ON
62GO
63SET ANSI_PADDING ON
64GO
65CREATE TABLE [dbo].[SV](
66 [MaSV] [VARCHAR](10) NOT NULL,
67 [TenSV] [nvarchar](50) NOT NULL,
68 [MaLop] [VARCHAR](10) NOT NULL,
69 [NamSinh] [smalldatetime] NULL,
70 [Gtinh] [bit] NULL,
71 CONSTRAINT [PK_SV] PRIMARY KEY CLUSTERED
72(
73 [MaSV] ASC
74)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
75) ON [PRIMARY]
76GO
77SET ANSI_PADDING OFF
78GO
79INSERT [dbo].[SV] ([MaSV], [TenSV], [MaLop], [NamSinh], [Gtinh]) VALUES (N'1221050211', N'NHẬT CƯỜNG', N'ML0002', CAST(0x7F990000 AS SmallDateTime), 0)
80INSERT [dbo].[SV] ([MaSV], [TenSV], [MaLop], [NamSinh], [Gtinh]) VALUES (N'1221050221', N'LÊ ÄÃŒNH HẢI', N'ML0001', CAST(0x861D0000 AS SmallDateTime), 1)
81INSERT [dbo].[SV] ([MaSV], [TenSV], [MaLop], [NamSinh], [Gtinh]) VALUES (N'1221050232', N'LÊ VĂN HỢP', N'ML0001', CAST(0x84B20000 AS SmallDateTime), 1)
82INSERT [dbo].[SV] ([MaSV], [TenSV], [MaLop], [NamSinh], [Gtinh]) VALUES (N'1221050243', N'TRUNG TỬ ÄÆ N', N'ML0004', CAST(0x7F980000 AS SmallDateTime), 1)
83INSERT [dbo].[SV] ([MaSV], [TenSV], [MaLop], [NamSinh], [Gtinh]) VALUES (N'1221050289', N'LÊ ÄÃŒNH TÙNG', N'ML0003', CAST(0x86790000 AS SmallDateTime), 0)
84/****** Object: StoredProcedure [dbo].[PR_lietke1] Script Date: 10/30/2014 11:26:27 ******/
85SET ANSI_NULLS ON
86GO
87SET QUOTED_IDENTIFIER ON
88GO
89CREATE PROCEDURE [dbo].[PR_lietke1]
90@MaLop VARCHAR(10)
91AS
92BEGIN
93 SELECT MaSV,TenSV FROM SV
94 WHERE MaLop=@MaLop
95
96END
97GO
98/****** Object: Table [dbo].[DangKy] Script Date: 10/30/2014 11:26:29 ******/
99SET ANSI_NULLS ON
100GO
101SET QUOTED_IDENTIFIER ON
102GO
103SET ANSI_PADDING ON
104GO
105CREATE TABLE [dbo].[DangKy](
106 [MaSV] [VARCHAR](10) NOT NULL,
107 [MaMon] [VARCHAR](10) NOT NULL,
108 [HocKy] [SMALLINT] NOT NULL,
109 CONSTRAINT [PK_DangKy] PRIMARY KEY CLUSTERED
110(
111 [MaSV] ASC,
112 [MaMon] ASC
113)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
114) ON [PRIMARY]
115GO
116SET ANSI_PADDING OFF
117GO
118INSERT [dbo].[DangKy] ([MaSV], [MaMon], [HocKy]) VALUES (N'1221050211', N'M0005', 1)
119INSERT [dbo].[DangKy] ([MaSV], [MaMon], [HocKy]) VALUES (N'1221050221', N'M0002', 2)
120INSERT [dbo].[DangKy] ([MaSV], [MaMon], [HocKy]) VALUES (N'1221050232', N'M0001', 1)
121INSERT [dbo].[DangKy] ([MaSV], [MaMon], [HocKy]) VALUES (N'1221050243', N'M0004', 4)
122INSERT [dbo].[DangKy] ([MaSV], [MaMon], [HocKy]) VALUES (N'1221050289', N'M0003', 2)
123/****** Object: StoredProcedure [dbo].[PR_lietke4] Script Date: 10/30/2014 11:26:27 ******/
124SET ANSI_NULLS ON
125GO
126SELECT * FROM SV
127
128
129SET QUOTED_IDENTIFIER ON
130GO
131---- Hãy viết một Stored Procedure với tham số đầu và o
132-- là Há»c kỳ ïƒ Liệt kê danh sách các SV
133----đăng ký nhiá»u hÆ¡n 10 tÃn chỉ trong há»c kỳ tương ứng
134
135 CREATE PROCEDURE [dbo].[PR_lietke4]
136 @HocKy SMALLINT
137 AS
138 BEGIN
139 --IF ((SELECT SUM( STC) FROM MonHoc )>10)
140 SELECT SV.MaSV,TenSV FROM SV INNER JOIN DangKy
141 ON SV.MaSV=DangKy.MaSV INNER JOIN MonHoc
142 ON MonHoc.MaMon=DangKy.MaMon
143 WHERE @HocKy=HocKy AND STC>10
144
145
146 END
147GO
148/****** Object: StoredProcedure [dbo].[PR_lietke3] Script Date: 10/30/2014 11:26:27 ******/
149SET ANSI_NULLS ON
150GO
151SET QUOTED_IDENTIFIER ON
152GO
153--3>..Hãy viết một Stored Procedure với các
154--tham số đầu và o là Mã SV và Há»c kỳ ïƒ Hãy tÃnh
155--tổng số tÃn chỉ Sinh viên đó đã đăng ký
156--trong há»c kỳ tương ứng và lưu và o 1 tham số dạng đầu ra.
157
158CREATE PROCEDURE [dbo].[PR_lietke3]
159@MaSV VARCHAR(10),
160@HocKy SMALLINT,
161@tong SMALLINT OUTPUT
162AS
163BEGIN
164 SELECT @tong=( SUM(STC)) FROM SV INNER JOIN DangKy
165 ON SV.MaSV=DangKy.MaSV INNER JOIN MonHoc
166 ON MonHoc.MaMon=DangKy.MaMon
167 WHERE SV.MaSV=@MaSV AND HocKy=@HocKy
168
169END
170GO
171/****** Object: StoredProcedure [dbo].[PR_lietke2] Script Date: 10/30/2014 11:26:27 ******/
172SET ANSI_NULLS ON
173GO
174SET QUOTED_IDENTIFIER ON
175GO
176CREATE PROCEDURE [dbo].[PR_lietke2]
177@MaMon VARCHAR(10),
178@HocKy SMALLINT
179AS
180BEGIN
181 SELECT SV.MaSV,TenSV,Lop.TenLop,
182 CASE Gtinh
183 WHEN 1 THEN 'Nam'
184 ELSE 'Ná»®'
185 END AS Gtinh
186 FROM SV INNER JOIN Lop
187 ON SV.MaLop=Lop.MaLop INNER JOIN DangKy
188 ON DangKy.MaSV=SV.MaSV
189 WHERE @MaMon=MaMon AND @HocKy=HocKy
190
191
192END
193GO
194/****** Object: ForeignKey [FK_DangKy_MonHoc] Script Date: 10/30/2014 11:26:29 ******/
195ALTER TABLE [dbo].[DangKy] WITH CHECK ADD CONSTRAINT [FK_DangKy_MonHoc] FOREIGN KEY([MaMon])
196REFERENCES [dbo].[MonHoc] ([MaMon])
197ON DELETE CASCADE
198GO
199ALTER TABLE [dbo].[DangKy] CHECK CONSTRAINT [FK_DangKy_MonHoc]
200GO
201/****** Object: ForeignKey [FK_DangKy_SV] Script Date: 10/30/2014 11:26:29 ******/
202ALTER TABLE [dbo].[DangKy] WITH CHECK ADD CONSTRAINT [FK_DangKy_SV] FOREIGN KEY([MaSV])
203REFERENCES [dbo].[SV] ([MaSV])
204ON UPDATE CASCADE
205ON DELETE CASCADE
206GO
207ALTER TABLE [dbo].[DangKy] CHECK CONSTRAINT [FK_DangKy_SV]
208GO
209/****** Object: ForeignKey [FK_SV_Lop] Script Date: 10/30/2014 11:26:29 ******/
210ALTER TABLE [dbo].[SV] WITH CHECK ADD CONSTRAINT [FK_SV_Lop] FOREIGN KEY([MaLop])
211REFERENCES [dbo].[Lop] ([MaLop])
212ON UPDATE CASCADE
213ON DELETE CASCADE
214GO
215ALTER TABLE [dbo].[SV] CHECK CONSTRAINT [FK_SV_Lop]
216GO
217
218
219----------------------------------------------------------
220--PHẦN I: FUNCTION
221--Bà i 1. Hãy viết một Function để tách tên của sinh viên từ HỠvà tên (giả sỠcột TenSV đang lưu
222--HỠvà tên của SV). Sau đó sỠdụng hà m đó để viết 1 câu truy vấn liệt kê danh sách Sinh viên của
223--lớp có tên là ‘TTD56’ được sắp xếp theo thứ tự alphabet của Tên sinh viên.
224--Bà i 2. Hãy viết 1 hà m để tÃnh tuổi cá»§a 1 ngưá»i dá»±a và o năm sinh. Sau đó sá» dụng hà m đó hãy
225--viết 1 câu truy vấn để liệt kê danh sách các Sinh viên (MaSV, TenSV, Tuoi, Gioitinh) của các
226--sinh viên đăng ký há»c môn có mã là ‘MH001’ ở kỳ 3.
227--Bà i 5. Hãy thêm 1 bảng mới có cấu trúc như sau: Thong_Ke(MaSV, Nam1, Nam2, Nam3, Nam4,
228--Nam5, Tong) để lưu lại thống kê vá» số lượng tÃn chỉ mà từng SV đã đăng ký theo từng năm vÃ
229--tổng số tÃn chỉ đăng ký (Trong đó: Cá»™t Nam1 sẽ lưu tổng số tÃn chỉ đã đăng ký trong năm há»c thứ
230--1, . . ., cá»™t Tong sẽ lưu tổng số tÃn chỉ đã đăng ký đến thá»i Ä‘iểm hiện nay). Hãy viết 1 stored
231--procedure để Insert dữ liệu và o cho bảng nà y.
232--Bà i 3. Xét bà i số 5 ở ở trên : insert dữ liệu cho bảng Thong_Ke(MaSV,
233--Nam1, Nam2, Nam3, Nam4, Nam5, Tong). Hãy viết 1 hà m với tham số đầu và o là (MaSV, Nam)
234--để tÃnh tổng số tÃn chỉ mà sinh viên đó đã đăng ký trong năm tương ứng. Sau đó sá» dụng hà m nà y
235--để Insert dữ liệu cho bảng trên chỉ bằng 1 câu truy vấn.
236--PHẦN I: TRIGGER
237--Bà i 1. Hãy viết má»™t Trigger để đưa ra câu thông báo khi Xóa 1 bản ghi khá»i bảng Monhoc
238--Bà i 2. Hãy viết trigger để tự động kiểm tra khi Insert một bản ghi và o bảng Dangky nếu
239--Hocky>10 hoặc <0 thì không được phép Insert (dùng lệnh ROLLBACK TRAN)
240--Bà i 3. Hãy viết trigger để tự động kiểm tra khi Insert một bản ghi và o bảng Dangky nếu Mã môn
241--há»c không có trong bảng Monhoc thì không được phép Insert (dùng lệnh ROLLBACK TRAN)
242--Bà i 4. Hãy viết trigger để tá»± động kiểm tra khi Delete má»™t bản ghi ở bảng Monhoc, nếu Môn há»c
243--đó đã được Sinh viên đăng ký thì không được phép Delete (dùng lệnh ROLLBACK TRAN)
244--Bà i 5. Hãy viết trigger để tự động xóa tất cả Sinh viên của 1 lớp khi Delete một bản ghi ở bảng
245--Lop tương ứng với lớp đó.
246--Bà i 6. Hãy viết trigger để tá»± động cáºp nháºt lại Mã lá»›p cá»§a tất cả Sinh viên cá»§a 1 lá»›p khi Update
247--lại mã lớp của bản ghi tương ứng với lớp đó ở bảng Lop.
248--Bà i 7. Hãy viết trigger để tá»± động cáºp nháºt lại Số SV (cá»™ng thêm 1) cá»§a 1 lá»›p ở bảng Lá»›p khi
249--thêm 1 sinh viên cá»§a lá»›p đó và o bảng Sinhvien. Tương tá»± viết Trigger cho trưá»ng hợp xóa 1 SV
250--khá»i bảng Sinhvien.
251---=====
252---Funtion
253--cau1
254create function myfuntion_GetFistName (@input NVARCHAR(250))
255returns nvarchar (50)
256as
257begin
258 --SUBSTRING ( expression ,start , length )
259 --CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] )
260 --REVERSE đaỠchuỗi abc->cba
261 declare @ten nvarchar (50)
262 set @ten=(select REVERSE(SUBSTRING(REVERSE(@input),0,CHARINDEX(' ',REVERSE(@input))))) --copy trên mạng, e chỉ cần dá»±a và o chức năng cá»§a nó để mò ra vì sao lại có thể như váºy
263 return @ten
264end
265go
266
267 ---Câu truy vấn
268
269select dbo.myfuntion_GetFistName(s.TenSV) as TenSV
270from SV s, Lop l
271where s.Malop=l.Malop and l.Tenlop=N'TTD56'
272order by TenSV
273-----------=========
274
275CREATE FUNCTION F_tinhtuoi (@NamSinh smalldatetime)
276RETURNS INT
277AS
278BEGIN
279 DECLARE @tuoi INT
280
281 SET @tuoi= (SELECT (YEAR(GETDATE())-YEAR(@NamSinh)) FROM SV )
282 RETURN (@tuoi
283
284END
285
286-- câu truy vấn
287
288--Hãy viết 1 hà m để tÃnh tuổi cá»§a 1 ngưá»i dá»±a và o năm sinh. Sau đó sá» dụng hà m đó hãy
289--viết 1 câu truy vấn để liệt kê danh sách các Sinh viên (MaSV, TenSV, Tuoi, Gioitinh) của các
290--sinh viên đăng ký há»c môn có mã là ‘MH001’ ở kỳ 3
291
292SELECT SV.MaSV,TenSV,dbo.F_tinhtuoi(SV.NamSinh) AS tuoi,
293 CASE Gtinh
294 WHEN 1 THEN 'nam'
295 ELSE 'nữ'
296 END AS Gtinh
297 FROM SV ,DangKy
298 WHERE SV.MaSV=DangKy.MaSV AND DangKy.MaMon='M0001' AND HocKy=3
299 ---
300 CREATE FUNCTION F_tinhtuoi (@NamSinh smalldatetime)
301RETURNS INT
302AS
303BEGIN
304 DECLARE @tuoi INT
305 SET @tuoi= YEAR(GETDATE())-YEAR(@NamSinh)
306 RETURN @tuoi
307END
308go
309-----
310-- TRIGGER
311--1>
312CREATE TRIGGER TR_DELETE
313ON MonHoc
314FOR DELETE
315AS
316DECLARE @MaMon VARCHAR(10)
317SELECT @MaMon=MaMon FROM DELETED
318PRINT'BAN ÄÃ XÓA THÀNH CÔNG'
319-- Câu truy vấn
320DELETE FROM MonHoc WHERE MaMon='M0001'
321
322--TRIGGER
323--2
324 CREATE TRIGGER TR_INSERT_DangKy
325 ON DangKy
326 FOR INSERT
327 AS
328 DECLARE @MaSV VARCHAR(10)
329 DECLARE @MaMon VARCHAR(10)
330 DECLARE @HocKy SMALLINT
331 SELECT FROM dangky
332-----
333nh xem câu 2 của em nhé
334
335–TRIGGER
336–2
337–Hãy viết trigger để tự động kiểm tra khi Insert một bản ghi và o bảng Dangky nếu
338–Hocky>10 hoặc <0 thì không được phép Insert (dùng lệnh ROLLBACK TRAN)
339CREATE TRIGGER TR_INSERT_DangKy
340ON DangKy
341FOR INSERT
342AS
343DECLARE @MaSV varchar(10)
344DECLARE @MaMon varchar(10)
345DECLARE @HocKy smallint
346SELECT @MaSV=MaSV,@MaMon=MaMon,@HocKy=HocKy FROM DangKy
347IF (@HocKy>10 or @HocKy<0)
348ROLLBACK TRAN
349else
350PRINT’Thêm thà nh công’
351/* E SỬA LẠI THÀNH
352
353SELECT @MaSV=MaSV,@MaMon=MaMon,@HocKy=HocKy FROM inserted (chứ k fai DangKy)
354
355Như a đã nói ở trên, trigger thì chỉ liên quan đến các bảng inserted, deleted, updated tuognw ứng với các thao tác.
356*/
357------------------------
358Anh ơi câu 3 em là m xong rồi
359CREATE TRIGGER TR_CAU3
360ON DangKy
361FOR INSERT
362AS
363DECLARE @MaSV varchar(10)
364DECLARE @MaMon varchar(10)
365DECLARE @HocKy smallint
366SELECT @MaSV=MaSV,@MaMon=MaMon,@HocKy=HocKy FROM INSERTED
367IF NOT EXISTS (SELECT @MaMon FROM DangKy WHERE @MaMon=MaMon )
368ROLLBACK TRAN
369ELSE
370PRINT’Thêm thà nh công’
371-------
372CREATE TRIGGER TR_CAU3
373ON DangKy
374FOR INSERT
375AS
376
377IF NOT EXISTS (SELECT * FROM MonHoc mh, inserted i WHERE i.MaMon=mh.MaMon)
378begin
379 PRINT N'Mon hocj khong ton tai'
380 ROLLBACK TRAN
381end
382ELSE
383begin
384 PRINT N'Thêm thà nh công'
385end
386----
387CREATE TRIGGER CAU5
388ON LOP
389FOR DELETE
390AS
391
392BEGIN
393DECLARE @MaLop varchar(10)
394set @MaLop=(Select MaLop FROM DELETED)
395delete from SV where MaLop=@MaLop
396
397END
398---
399--Câu 3 a ngĩ thế nà y mới đúng.
400
401CREATE TRIGGER TR_CAU3
402ON DangKy
403FOR INSERT
404AS
405
406IF NOT EXISTS (SELECT * FROM MonHoc mh, inserted i WHERE i.MaMon=mh.MaMon)
407begin
408 PRINT N'Mon hocj khong ton tai'
409 ROLLBACK TRAN
410end
411ELSE
412begin
413 PRINT N'Thêm thà nh công'
414end
415--
416CÂU 6:
417–Hãy viết trigger để tá»± động cáºp nháºt lại Mã lá»›p cá»§a tất cả Sinh viên cá»§a 1 lá»›p khi Update
418–lại mã lớp của bản ghi tương ứng với lớp đó ở bảng Lop.
419CREATE TRIGGER CAU6
420ON Lop
421FOR UPDATE
422AS
423IF UPDATE (MaLop)
424
425BEGIN
426DECLARE @MaLop varchar(10)
427DECLARE @MaSV varchar(10)
428DECLARE contro CURSOR FOR
429SELECT inserted.MaLop
430FROM INSERTED INNER JOIN DELETED
431ON INSERTED.MaLop=DELETED.MaLop
432OPEN contro
433FETCH NEXT FROM contro INTO @MaLop,@MaSV
434WHILE @@FETCH_STATUS=0
435BEGIN
436UPDATE SV.MaLop SET MaLop=@MaLop
437WHERE Lop.MaLop=@MaLop
438FETCH NEXT FROM contro INTO @MaSV,@MaLop
439
440END
441CLOSE contro
442DEALLOCATE contro
443END
444----
445CAU 7 cau em day ak
446
447–Hãy viết trigger để tá»± động cáºp nháºt lại Số SV (cá»™ng thêm 1) cá»§a 1 lá»›p ở bảng Lá»›p khi
448–thêm 1 sinh viên cá»§a lá»›p đó và o bảng Sinhvien. Tương tá»± viết Trigger cho trưá»ng hợp xóa 1 SV
449–khá»i bảng Sinhvien.
450CREATE TRIGGER CAU7
451ON Lop
452FOR UPDATE
453AS
454BEGIN
455DECLARE @MaSV varchar(10)
456DECLARE @SoSV int
457DECLARE @MaLop varchar(10)
458
459if( SELECT COUNT( INSERTED.MaSV ) FROM SV
460 WHERE MaSV=@MaSV AND MaLop=@MaLop)=1
461
462 update Lop
463 SET SoSV=SoSV+1
464
465 ELSE if( SELECT COUNT( DELETED.MaSV ) FROM SV
466 WHERE MaSV=@MaSV AND MaLop=@MaLop)=1
467 update Lop
468 SET SoSV=SoSV-1
469END
470-----------------
471Câu nà y a ngÄ© không cần thiết fai dùng Cusor đâu e :smile:. Là m váºy đơn giản hÆ¡n.
472
473CREATE TRIGGER CAU5
474ON LOP
475FOR DELETE
476AS
477
478BEGIN
479DECLARE @MaLop varchar(10)
480set @MaLop=(Select MaLop FROM DELETED)
481delete from SV where MaLop=@MaLop
482
483END
484----------