SlideShare a Scribd company logo
DB2
-- Chu y, trong DB2, trong CSDL cua ban co the co schema khac NCKH, co the co
tablespace khac USERSPACE1
CREATE TABLE NCKH.LOPSH ( MALOPSH VARCHAR (10) NOT NULL ,
MAKHOA CHARACTER (6) NOT NULL , SISO SMALLINT WITH DEFAULT 0 ,
CONSTRAINT CC1331778626427 PRIMARY KEY ( MALOPSH) ) IN
USERSPACE1 ;
COMMENT ON TABLE NCKH.LOPSH IS 'Lop Sinh Hoat';
CREATE TABLE NCKH.SV ( MASV CHARACTER (11) NOT NULL , HOTENSV
VARGRAPHIC (50) NOT NULL , MALOPSH VARCHAR (10) NOT NULL ,
CONSTRAINT CC1331779384063 PRIMARY KEY ( MASV) ) IN USERSPACE1 ;
CREATE OR REPLACE TRIGGER NCKH.TRG_SV_AI AFTER INSERT ON
NCKH.SV REFERENCING NEW_TABLE AS n FOR EACH STATEMENT MODE
DB2SQL
-- ATOMIC = nguyen to de ca khoi BEGIN…END duoc thuc thi theo kieu hoac hoan
toan, hoac la khong
BEGIN ATOMIC
-- Kiem tra xem, co gia tri MaLopSH nao chua co trong bang LOPSH hay khong
DECLARE cnt INT;
SET cnt = (SELECT COUNT(*) FROM n LEFT OUTER JOIN LOPSH ON
n.MaLopSH = LOPSH.MaLopSH WHERE LOPSH.MaLopSH IS NULL);
IF (cnt > 0) THEN
-- Dua ra thong bao va ROLLBACK TRANSACTION
SIGNAL SQLSTATE '80000' ('Mot so ban ghi duoc them moi chua cac
gia tri MaLopSH khong co trong bang LOPSH!');
END IF;
-- Cho moi ban ghi trong ket qua cua SELECT
-- O day, ta lam theo cach toi uu hon, nghia la thay vi moi lan cho moi ban ghi
duoc them moi ta +1, ta tinh tong roi cong mot lan
FOR myRecord AS SELECT MaLopSH, COUNT(MaSV) AS cnt FROM n
GROUP BY MaLopSH DO
UPDATE LOPSH SET SiSo = SiSo + myRecord.cnt WHERE MaLopSH
= myRecord.maLopSH;
END FOR;
-- Chu y: Statement termination character duoc quy dinh la ^, chu y o phan duoi cua so
Command editor, nen ta dung END^
-- Neu la @, thi END@
END^
-- Dung cac truy van sau day de kiem tra:
-- INSERT INTO LOPSH (MaLopSH, maKhoa) VALUES('L1', 'Khoa12'),('L2',
'Khoa12');
-- SELECT * FROM LOPSH; -- SiSo cho L1 va L2 la gi??? 0, 0
-- INSERT INTO SV(MaSV, HoTenSV, MaLopSH) VALUES('12345678901',
N'Nguyeexn','L1'), ('12345678902', N'Nguyeexn','L1'), ('12345678903',
N'Nguyeexn','L2');
-- SELECT * FROM LOPSH; -- SiSo cho L1 va L2 la gi??? 2, 1
-- Neu them moi ban ghi co MaLopSH = ‘L3’ chua co trong bang LOPSH thi se nhan
duoc thong bao loi
-- INSERT INTO SV(MaSV, HoTenSV, MaLopSH) VALUES('12345678907',
N'Nguyeexn','L3')
SQL SERVER
Muon chay dong nao thi bo comment cua dong do. Comment: --, /*.....*/.
CHua co thoi gian. Se co the cho truong hop UPDATE, cung nhu trong DB2. Cac ban co gang gui
cho cac ban khac ko phai la thanh vien lop 35k14.
--CREATE TABLE LOPSH(MaLopSH VARCHAR(10) NOT NULL PRIMARY KEY, MaKhoa
CHAR(6) NOT NULL, SiSo INT DEFAULT 0);
--CREATE TABLE SV(MaSV CHAR(11) NOT NULL PRIMARY KEY, HoTenSV NVARCHAR(50)
NOT NULL, MaLopSH VARCHAR(10) NOT NULL);
/*
-- Neu dieu chinh chu ko phai tao moi, ta dung ALTER thay vi CREATE
-- Co the google: T-SQL CREATE TRIGGER
CREATE TRIGGER [dbo].[trg_SV_BI]
ON [dbo].[SV]
FOR INSERT
AS
BEGIN
SET NOCOUNT ON;
-- Insert statements for trigger here
-- Khai bao bien, chu y kieu du lieu va kich thuoc
DECLARE @maLop [varchar](10);
-- Khai bao bien cu-so, co the google: T-SQL CURSOR
DECLARE myCursor CURSOR FOR
SELECT maLopSH FROM inserted;
-- Mo cu-so
OPEN myCursor;
-- Lay ban ghi ke tiep va cho vao bien @maLop, vi tri ban dau khong phai o ban ghi dau
tien
FETCH NEXT FROM myCursor
INTO @maLop;
-- Khi con co the lay ban ghi ke tiep tu cu-so, neu # 0 - loi, nghia la khong the lay tu cu-so
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE LOPSH SET SiSo = SiSo + 1 WHERE maLopSH = @maLop;
FETCH NEXT FROM myCursor
INTO @maLop;
END;
-- Dong cu-so sau khi da su dung xong
CLOSE myCursor;
-- Giai phong bo nho da phan bo cho cu-so
DEALLOCATE myCursor;
END;
*/
-- insert cung luc nhieu ban ghi, SiSo ban dau tu dong = 0
-- INSERT INTO LOPSH (MaLopSH, maKhoa) VALUES('L1', 'Khoa12'),('L2', 'Khoa12');
-- SELECT * FROM LOPSH; -- SiSo cho L1 va L2 la gi??? 0, 0
-- INSERT INTO SV(MaSV, HoTenSV, MaLopSH) VALUES('12345678901', N'Nguyeexn','L1'),
('12345678902', N'Nguyeexn','L1'), ('12345678903', N'Nguyeexn','L2');
-- SELECT * FROM LOPSH; -- SiSo cho L1 va L2 la gi??? 2, 1
/*
CREATE TRIGGER [dbo].[trg_SV_AU]
ON [dbo].[SV]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
-- Insert statements for trigger here
-- Khai bao bien, chu y kieu du lieu va kich thuoc
DECLARE @maLop [varchar](10);
DECLARE @maSinhVien [char](11);
DECLARE @HoTen [nvarchar](50);
-- Khai bao bien cu-so
DECLARE myCursorD CURSOR FOR
SELECT maLopSH FROM deleted;
-- Mo cu-so
OPEN myCursorD;
-- UPDATE mot ban ghi = DELETE mot ban ghi (chua cac gia tri cu cua
UPDATE) + INSERT mot ban ghi (chua cac gia tri moi cua UPDATE)
-- Lay ban ghi ke tiep va cho vao bien @maLop, vi tri ban dau khong phai
o ban ghi dau tien
FETCH NEXT FROM myCursorD
INTO @maLop;
-- Khi con co the lay ban ghi ke tiep tu cu-so, neu # 0 - loi, nghia la khong
the lay tu cu-so
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE LOPSH SET SiSo = SiSo - 1 WHERE maLopSH =
@maLop;
FETCH NEXT FROM myCursorD
INTO @maLop;
END;
-- Dong cu-so sau khi da su dung xong
CLOSE myCursorD;
-- Giai phong bo nho da phan bo cho cu-so
DEALLOCATE myCursorD;
-- Khai bao bien cu-so
DECLARE myCursorI CURSOR FOR
SELECT maSV, HoTenSV, maLopSH FROM inserted; -- co the
select tat ca, co the mot vai cot
-- Mo cu-so
OPEN myCursorI;
-- Lay ban ghi ke tiep va cho vao bien @maLop, vi tri ban dau khong phai
o ban ghi dau tien
FETCH NEXT FROM myCursorI
INTO @maSinhVien, @HoTen, @maLop; -- khi khai bao cu-so co
bao nhieu cot thi gio select ra cungphai bay nhieu bien tuong ung bay
nhieu cot
-- Khi con co the lay ban ghi ke tiep tu cu-so, neu # 0 - loi, nghia la khong
the lay tu cu-so
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE LOPSH SET SiSo = SiSo + 1 WHERE maLopSH =
@maLop;
FETCH NEXT FROM myCursorI
INTO @maSinhVien, @HoTen, @maLop;
END;
-- Dong cu-so sau khi da su dung xong
CLOSE myCursorI;
-- Giai phong bo nho da phan bo cho cu-so
DEALLOCATE myCursorI;
END;
*/
-- UPDATE SV SET MaLopSH = 'L2' WHERE MaSV = '12345678901';
--SELECT * FROM LOPSH; -- SiSo cua L1, L2 la 1, 2
/*
CREATE TRIGGER [dbo].[trg_SV_AD]
ON [dbo].[SV]
AFTER DELETE
AS
BEGIN
SET NOCOUNT ON;
-- Insert statements for trigger here
-- Khai bao bien, chu y kieu du lieu va kich thuoc
DECLARE @maLop [varchar](10);
-- Khai bao bien cu-so
DECLARE myCursorD CURSOR FOR
SELECT maLopSH FROM deleted;
-- Mo cu-so
OPEN myCursorD;
FETCH NEXT FROM myCursorD
INTO @maLop;
-- Khi con co the lay ban ghi ke tiep tu cu-so, neu # 0 - loi, nghia la
khong the lay tu cu-so
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE LOPSH SET SiSo = SiSo - 1 WHERE maLopSH = @maLop;
FETCH NEXT FROM myCursorD
INTO @maLop;
END;
-- Dong cu-so sau khi da su dung xong
CLOSE myCursorD;
-- Giai phong bo nho da phan bo cho cu-so
DEALLOCATE myCursorD;
END;
-- DELETE FROM SV WHERE MaSV = '12345678901';
-- SELECT * FROM LOPSH; -- SiSo cua L1, L2 la 1, 1
*/

More Related Content

What's hot

Juan
JuanJuan
Juan
17gilmar
 
Ask the CEO, Environmental Alert
Ask the CEO, Environmental Alert Ask the CEO, Environmental Alert
Ask the CEO, Environmental Alert
Dr. Joshua Zake
 
Automobile engineering 2004 05 page ii
Automobile engineering 2004 05 page iiAutomobile engineering 2004 05 page ii
Automobile engineering 2004 05 page ii
Krishna Gali
 
Control de asistencia junio
Control de asistencia junioControl de asistencia junio
Control de asistencia junio
algebragr5
 
Img 20190213 0014
Img 20190213 0014Img 20190213 0014
Img 20190213 0014
4TTTHHH
 
Plan del trabajo del departamento psicopedagógico
Plan del trabajo del departamento psicopedagógicoPlan del trabajo del departamento psicopedagógico
Plan del trabajo del departamento psicopedagógico
Zeratul Aldaris
 
Archivo0004
Archivo0004Archivo0004
Archivo0004
Brianklin Flores
 
Children's stories
Children's storiesChildren's stories
Children's stories
Karasunaki
 

What's hot (18)

IMG_0002
IMG_0002IMG_0002
IMG_0002
 
BBA Certificate
BBA CertificateBBA Certificate
BBA Certificate
 
duc certificate.PDF
duc certificate.PDFduc certificate.PDF
duc certificate.PDF
 
Juan
JuanJuan
Juan
 
Ask the CEO, Environmental Alert
Ask the CEO, Environmental Alert Ask the CEO, Environmental Alert
Ask the CEO, Environmental Alert
 
Automobile engineering 2004 05 page ii
Automobile engineering 2004 05 page iiAutomobile engineering 2004 05 page ii
Automobile engineering 2004 05 page ii
 
Control de asistencia junio
Control de asistencia junioControl de asistencia junio
Control de asistencia junio
 
SafeServe Certificate
SafeServe Certificate SafeServe Certificate
SafeServe Certificate
 
Img 20190213 0014
Img 20190213 0014Img 20190213 0014
Img 20190213 0014
 
Dig-Osc 1989_0001
Dig-Osc 1989_0001Dig-Osc 1989_0001
Dig-Osc 1989_0001
 
Transcript 1
Transcript 1Transcript 1
Transcript 1
 
Plan del trabajo del departamento psicopedagógico
Plan del trabajo del departamento psicopedagógicoPlan del trabajo del departamento psicopedagógico
Plan del trabajo del departamento psicopedagógico
 
Archivo0004
Archivo0004Archivo0004
Archivo0004
 
Yellow Belt
Yellow BeltYellow Belt
Yellow Belt
 
5- File0034
5- File00345- File0034
5- File0034
 
alpina 2
alpina 2alpina 2
alpina 2
 
NATL GUARD_PG2_HN
NATL GUARD_PG2_HNNATL GUARD_PG2_HN
NATL GUARD_PG2_HN
 
Children's stories
Children's storiesChildren's stories
Children's stories
 

Viewers also liked

RACHEL HOWLAND OF MILWAUKEE –VOLUNTEER
RACHEL HOWLAND OF MILWAUKEE –VOLUNTEERRACHEL HOWLAND OF MILWAUKEE –VOLUNTEER
RACHEL HOWLAND OF MILWAUKEE –VOLUNTEER
rachelhowlandmilwaukee
 
Jportilla cec2014
Jportilla cec2014Jportilla cec2014
Jportilla cec2014
jjezuzyahoo
 
PassingTheTorch08
PassingTheTorch08PassingTheTorch08
PassingTheTorch08
Roberto Bonaccorso
 
Jportilla cec2014
Jportilla cec2014Jportilla cec2014
Jportilla cec2014
jjezuzyahoo
 
Dinamika lagrange
Dinamika lagrangeDinamika lagrange
Dinamika lagrange
Desy Anggreani
 
Ppt q
Ppt qPpt q
Jportilla cec2014
Jportilla cec2014Jportilla cec2014
Jportilla cec2014
jjezuzyahoo
 
Jportilla cec2014
Jportilla cec2014Jportilla cec2014
Jportilla cec2014
jjezuzyahoo
 
RBI : Payment & Settlement Systems
RBI : Payment & Settlement SystemsRBI : Payment & Settlement Systems
RBI : Payment & Settlement Systems
Rahul Deka
 
RBI : Payment & Settlement Systems
RBI : Payment & Settlement SystemsRBI : Payment & Settlement Systems
RBI : Payment & Settlement Systems
Rahul Deka
 

Viewers also liked (10)

RACHEL HOWLAND OF MILWAUKEE –VOLUNTEER
RACHEL HOWLAND OF MILWAUKEE –VOLUNTEERRACHEL HOWLAND OF MILWAUKEE –VOLUNTEER
RACHEL HOWLAND OF MILWAUKEE –VOLUNTEER
 
Jportilla cec2014
Jportilla cec2014Jportilla cec2014
Jportilla cec2014
 
PassingTheTorch08
PassingTheTorch08PassingTheTorch08
PassingTheTorch08
 
Jportilla cec2014
Jportilla cec2014Jportilla cec2014
Jportilla cec2014
 
Dinamika lagrange
Dinamika lagrangeDinamika lagrange
Dinamika lagrange
 
Ppt q
Ppt qPpt q
Ppt q
 
Jportilla cec2014
Jportilla cec2014Jportilla cec2014
Jportilla cec2014
 
Jportilla cec2014
Jportilla cec2014Jportilla cec2014
Jportilla cec2014
 
RBI : Payment & Settlement Systems
RBI : Payment & Settlement SystemsRBI : Payment & Settlement Systems
RBI : Payment & Settlement Systems
 
RBI : Payment & Settlement Systems
RBI : Payment & Settlement SystemsRBI : Payment & Settlement Systems
RBI : Payment & Settlement Systems
 

Hqt csdl 2 trigger - db2-sql server - examples

  • 1. DB2 -- Chu y, trong DB2, trong CSDL cua ban co the co schema khac NCKH, co the co tablespace khac USERSPACE1 CREATE TABLE NCKH.LOPSH ( MALOPSH VARCHAR (10) NOT NULL , MAKHOA CHARACTER (6) NOT NULL , SISO SMALLINT WITH DEFAULT 0 , CONSTRAINT CC1331778626427 PRIMARY KEY ( MALOPSH) ) IN USERSPACE1 ; COMMENT ON TABLE NCKH.LOPSH IS 'Lop Sinh Hoat'; CREATE TABLE NCKH.SV ( MASV CHARACTER (11) NOT NULL , HOTENSV VARGRAPHIC (50) NOT NULL , MALOPSH VARCHAR (10) NOT NULL , CONSTRAINT CC1331779384063 PRIMARY KEY ( MASV) ) IN USERSPACE1 ; CREATE OR REPLACE TRIGGER NCKH.TRG_SV_AI AFTER INSERT ON NCKH.SV REFERENCING NEW_TABLE AS n FOR EACH STATEMENT MODE DB2SQL -- ATOMIC = nguyen to de ca khoi BEGIN…END duoc thuc thi theo kieu hoac hoan toan, hoac la khong BEGIN ATOMIC -- Kiem tra xem, co gia tri MaLopSH nao chua co trong bang LOPSH hay khong DECLARE cnt INT; SET cnt = (SELECT COUNT(*) FROM n LEFT OUTER JOIN LOPSH ON n.MaLopSH = LOPSH.MaLopSH WHERE LOPSH.MaLopSH IS NULL); IF (cnt > 0) THEN -- Dua ra thong bao va ROLLBACK TRANSACTION SIGNAL SQLSTATE '80000' ('Mot so ban ghi duoc them moi chua cac gia tri MaLopSH khong co trong bang LOPSH!'); END IF; -- Cho moi ban ghi trong ket qua cua SELECT -- O day, ta lam theo cach toi uu hon, nghia la thay vi moi lan cho moi ban ghi duoc them moi ta +1, ta tinh tong roi cong mot lan FOR myRecord AS SELECT MaLopSH, COUNT(MaSV) AS cnt FROM n GROUP BY MaLopSH DO UPDATE LOPSH SET SiSo = SiSo + myRecord.cnt WHERE MaLopSH = myRecord.maLopSH; END FOR; -- Chu y: Statement termination character duoc quy dinh la ^, chu y o phan duoi cua so Command editor, nen ta dung END^ -- Neu la @, thi END@ END^
  • 2. -- Dung cac truy van sau day de kiem tra: -- INSERT INTO LOPSH (MaLopSH, maKhoa) VALUES('L1', 'Khoa12'),('L2', 'Khoa12'); -- SELECT * FROM LOPSH; -- SiSo cho L1 va L2 la gi??? 0, 0 -- INSERT INTO SV(MaSV, HoTenSV, MaLopSH) VALUES('12345678901', N'Nguyeexn','L1'), ('12345678902', N'Nguyeexn','L1'), ('12345678903', N'Nguyeexn','L2'); -- SELECT * FROM LOPSH; -- SiSo cho L1 va L2 la gi??? 2, 1 -- Neu them moi ban ghi co MaLopSH = ‘L3’ chua co trong bang LOPSH thi se nhan duoc thong bao loi -- INSERT INTO SV(MaSV, HoTenSV, MaLopSH) VALUES('12345678907', N'Nguyeexn','L3')
  • 3. SQL SERVER Muon chay dong nao thi bo comment cua dong do. Comment: --, /*.....*/. CHua co thoi gian. Se co the cho truong hop UPDATE, cung nhu trong DB2. Cac ban co gang gui cho cac ban khac ko phai la thanh vien lop 35k14. --CREATE TABLE LOPSH(MaLopSH VARCHAR(10) NOT NULL PRIMARY KEY, MaKhoa CHAR(6) NOT NULL, SiSo INT DEFAULT 0); --CREATE TABLE SV(MaSV CHAR(11) NOT NULL PRIMARY KEY, HoTenSV NVARCHAR(50) NOT NULL, MaLopSH VARCHAR(10) NOT NULL); /* -- Neu dieu chinh chu ko phai tao moi, ta dung ALTER thay vi CREATE -- Co the google: T-SQL CREATE TRIGGER CREATE TRIGGER [dbo].[trg_SV_BI] ON [dbo].[SV] FOR INSERT AS BEGIN SET NOCOUNT ON; -- Insert statements for trigger here -- Khai bao bien, chu y kieu du lieu va kich thuoc DECLARE @maLop [varchar](10); -- Khai bao bien cu-so, co the google: T-SQL CURSOR DECLARE myCursor CURSOR FOR SELECT maLopSH FROM inserted; -- Mo cu-so OPEN myCursor; -- Lay ban ghi ke tiep va cho vao bien @maLop, vi tri ban dau khong phai o ban ghi dau tien FETCH NEXT FROM myCursor INTO @maLop; -- Khi con co the lay ban ghi ke tiep tu cu-so, neu # 0 - loi, nghia la khong the lay tu cu-so WHILE @@FETCH_STATUS = 0 BEGIN UPDATE LOPSH SET SiSo = SiSo + 1 WHERE maLopSH = @maLop; FETCH NEXT FROM myCursor INTO @maLop; END; -- Dong cu-so sau khi da su dung xong CLOSE myCursor; -- Giai phong bo nho da phan bo cho cu-so DEALLOCATE myCursor; END; */ -- insert cung luc nhieu ban ghi, SiSo ban dau tu dong = 0 -- INSERT INTO LOPSH (MaLopSH, maKhoa) VALUES('L1', 'Khoa12'),('L2', 'Khoa12'); -- SELECT * FROM LOPSH; -- SiSo cho L1 va L2 la gi??? 0, 0
  • 4. -- INSERT INTO SV(MaSV, HoTenSV, MaLopSH) VALUES('12345678901', N'Nguyeexn','L1'), ('12345678902', N'Nguyeexn','L1'), ('12345678903', N'Nguyeexn','L2'); -- SELECT * FROM LOPSH; -- SiSo cho L1 va L2 la gi??? 2, 1 /* CREATE TRIGGER [dbo].[trg_SV_AU] ON [dbo].[SV] AFTER UPDATE AS BEGIN SET NOCOUNT ON; -- Insert statements for trigger here -- Khai bao bien, chu y kieu du lieu va kich thuoc DECLARE @maLop [varchar](10); DECLARE @maSinhVien [char](11); DECLARE @HoTen [nvarchar](50); -- Khai bao bien cu-so DECLARE myCursorD CURSOR FOR SELECT maLopSH FROM deleted; -- Mo cu-so OPEN myCursorD; -- UPDATE mot ban ghi = DELETE mot ban ghi (chua cac gia tri cu cua UPDATE) + INSERT mot ban ghi (chua cac gia tri moi cua UPDATE) -- Lay ban ghi ke tiep va cho vao bien @maLop, vi tri ban dau khong phai o ban ghi dau tien FETCH NEXT FROM myCursorD INTO @maLop; -- Khi con co the lay ban ghi ke tiep tu cu-so, neu # 0 - loi, nghia la khong the lay tu cu-so WHILE @@FETCH_STATUS = 0 BEGIN UPDATE LOPSH SET SiSo = SiSo - 1 WHERE maLopSH = @maLop; FETCH NEXT FROM myCursorD INTO @maLop; END; -- Dong cu-so sau khi da su dung xong CLOSE myCursorD; -- Giai phong bo nho da phan bo cho cu-so DEALLOCATE myCursorD; -- Khai bao bien cu-so DECLARE myCursorI CURSOR FOR SELECT maSV, HoTenSV, maLopSH FROM inserted; -- co the select tat ca, co the mot vai cot
  • 5. -- Mo cu-so OPEN myCursorI; -- Lay ban ghi ke tiep va cho vao bien @maLop, vi tri ban dau khong phai o ban ghi dau tien FETCH NEXT FROM myCursorI INTO @maSinhVien, @HoTen, @maLop; -- khi khai bao cu-so co bao nhieu cot thi gio select ra cungphai bay nhieu bien tuong ung bay nhieu cot -- Khi con co the lay ban ghi ke tiep tu cu-so, neu # 0 - loi, nghia la khong the lay tu cu-so WHILE @@FETCH_STATUS = 0 BEGIN UPDATE LOPSH SET SiSo = SiSo + 1 WHERE maLopSH = @maLop; FETCH NEXT FROM myCursorI INTO @maSinhVien, @HoTen, @maLop; END; -- Dong cu-so sau khi da su dung xong CLOSE myCursorI; -- Giai phong bo nho da phan bo cho cu-so DEALLOCATE myCursorI; END; */ -- UPDATE SV SET MaLopSH = 'L2' WHERE MaSV = '12345678901'; --SELECT * FROM LOPSH; -- SiSo cua L1, L2 la 1, 2 /* CREATE TRIGGER [dbo].[trg_SV_AD] ON [dbo].[SV] AFTER DELETE AS BEGIN SET NOCOUNT ON; -- Insert statements for trigger here -- Khai bao bien, chu y kieu du lieu va kich thuoc DECLARE @maLop [varchar](10); -- Khai bao bien cu-so DECLARE myCursorD CURSOR FOR SELECT maLopSH FROM deleted; -- Mo cu-so OPEN myCursorD; FETCH NEXT FROM myCursorD INTO @maLop; -- Khi con co the lay ban ghi ke tiep tu cu-so, neu # 0 - loi, nghia la khong the lay tu cu-so WHILE @@FETCH_STATUS = 0 BEGIN UPDATE LOPSH SET SiSo = SiSo - 1 WHERE maLopSH = @maLop;
  • 6. FETCH NEXT FROM myCursorD INTO @maLop; END; -- Dong cu-so sau khi da su dung xong CLOSE myCursorD; -- Giai phong bo nho da phan bo cho cu-so DEALLOCATE myCursorD; END; -- DELETE FROM SV WHERE MaSV = '12345678901'; -- SELECT * FROM LOPSH; -- SiSo cua L1, L2 la 1, 1 */