Thủ thư tạo hồ sơ sách gồm các thông tin : mã sách, tên sách, thể loại sách, tên tác giả, số lượng, nhà xuất bản, năm xuất bản.. Mỗi cuốn sách có thể được mượn với số ngày quy định c
Trang 1TRƯỜNG ĐẠI HỌC XÂY DỰNG
BÁO CÁO ĐỒ ÁN
CƠ SỞ DỮ LIỆU NÂNG CAO
Đề tài: Quản lý thư viện
Giảng viên hướng dẫn: Ths.Nguyễn Đình Anh Nhóm 4 :
Lê Anh Tuấn - 223463
Nguyễn Minh Hiếu - 72463
Trương Ngọc Vượng - 238463
Lớp : 63IT3
Khoa : Công Nghệ Thông Tin
Trang 21 PHÁT BIỂU BÀI TOÁN
Khi mượn, sinh viên phải sử dụng thẻ thư viện chứa các thông tin liên quan Mỗi lần mượn sách được ghi nhận bằng phiếu mượn (bằng giấy) và sẽ lưu lại lịch
Hệ thống được xây dựng bằng ngôn ngữ lập trình Java và SQL Server, cài
đặt trên máy tính cá nhân.
1.2 Ý tưởng về hệ thống quản lý thư viện:
Mỗi quyển sách có 1 mã sách để lưu trữ trong hệ thống (sách giống nhau sẽ cùng 1 mã sách).
Mỗi độc giả (sinh viên) được cấp một thẻ thành viên
Độc giả muốn mượn sách thì lấy quyển sách muốn mượn trên kệ rồi mang ra đưa thủ thư tiến hành quá trình mượn.
Khi độc giả trả sách: xác nhận thẻ độc giả, xác định phiếu mượn tiến hành trả sách
Sách bị trả trễ lịch hẹn hoặc hỏng sẽ bị phạt.
1.3 Nhận xét
- Chủ động việc tìm kiếm, tra cứu và quản lý sách.
- Dễ dàng thao tác, nhanh chóng, linh hoạt.
- Hạn chế rủi ro, tiết kiệm thời gian.
- Quản lý sách đầu vào và đầu ra dễ dàng.
Trang 32 MÔ TẢ NGHIỆP VỤ
Thư viện được quản lý bằng các nhân viên(Thủ thư).
Thông tin nhân viên gồm : mã nhân viên, họ tên, giới tính, số điện thoại, địa chỉ.
Mỗi nhân viên được cấp 1 tài khoản để truy cập hệ thống.
Thủ thư tạo hồ sơ sách gồm các thông tin : mã sách, tên sách, thể loại sách, tên tác giả, số lượng, nhà xuất bản, năm xuất bản.
Quản lý mượn / trả sách.
Báo cáo tình hình hoạt động.
Mỗi sách có 1 mã sách để phân biệt với sách khác.
Các sách có thể có cùng 1 thể loại.
Mỗi thể loại sẽ có mã thể loại để phân biệt các thể loại khác.
Mỗi nhà xuất bản có thể sản xuất nhiều sách.
Thông tin nhà xuất bản gồm : mã nhà xuất bản, tên nhà xuất bản.
Mỗi tác giả có thể viết nhiều sách.
Thông tin tác giả gồm : mã tác giả, tên tác giả.
Nếu sinh viên chưa có thẻ thư viện thì phải đăng kí làm thẻ thư viện Sinh viên điền đầy đủ thông tin vào đơn đăng kí vào thẻ thư viện.
Thông tin sinh viên gồm : mã số sinh viên, họ tên, lớp, khoa, ngày sinh, địa chỉ, giới tính.
Nếu thông tin sinh viên hợp lệ thủ thư sẽ lưu vào sổ dữ liệu quản lý độc giả, làm và cấp thẻ độc giả cho sinh viên.
Độc giả muốn mượn sách thì lấy quyển sách muốn mượn trên kệ rồi mang ra đưa thủ thư tiến hành quá trình mượn.
Sau khi kiểm tra đầy đủ thông tin độc giả, tình trạng sách, thủ thư kiểm tra điều kiện mượn của độc giả thì xác nhận cho phép mượn sách.
Mỗi cuốn sách có thể được mượn với số ngày quy định của thư viện là
2 tháng/ quyển và với mỗi sinh viên tại một thời điểm sẽ được mượn sách với số lượng sách nhất định theo quy định của thư viện.
Mỗi học sinh được mượn nhiều sách (nhiều nhất 5 quyển ), hoặc mượn
1 quyển sách nhiều lần Và 1 quyển sách có thể được mượn bởi nhiều sinh viên.
Trang 4 Thông tin phiếu mượn gồm : mã phiếu mượn, mã sinh viên, thời gian mượn, thời gian trả, mã sách, số lượng.
Thủ thư cập nhật lại số lượng sách trong hồ sơ sách.
Khi trả sách thủ thư sẽ kiểm tra thông tin thẻ thư viện, phiếu mượn sách để xác định độc giả có trả đúng hạn hay không.
Cùng với đó thủ thư sẽ kiểm tra tình trạng của sách có bị hư hại, nếu
có tiến hành lập biên bản xử phạt.
Biên bản xử phạt gồm : Mã sinh viên, họ tên, lớp, khoa, lỗi vi phạm
và phương hướng giải quyết sự cố.
Dựa vào biên bản sự cố và quy định đã có của thư viện thủ thư sẽ giải quyết sự cố bằng cách phạt tiền với trường hợp trễ hạn trả sách thì phạt: 5000đ/ngày.Trong trường hợp mất sách thì sinh viên phải đền đúng số giá tiền của quyển sách đó hoặc mua quyển sách mới giống quyển mất để trả lại cho thư viện Nếu sự cố nằm ngoài sự kiểm soát của thủ thư thì thủ thư sẽ trình biên bản vi phạm này lên ban lãnh đạo của trường để giải quyết.
Sau khi trả sách, thủ thư sẽ cập nhập lại số lượng sách đó trong hồ sơ sách Nếu quá hạn trả sách mà sách vẫn chưa được trả, thì thủ thư sẽ gửi thông báo nhắc nhở đến sinh viên.
Khi thư viện cần bổ sung một số sách mới, thủ thư sẽ tìm hiểu thông tin sách cần mua và giá cả, sau đó lập phiếu nhập sách và trình lên ban lãnh đạo nhà trường xét duyệt Nếu phiếu nhập sách được xét duyệt, thủ thư sẽ liên hệ với kế toán xuất tiền.
Thủ thư sẽ liên hệ với nhà cung cấp để mua sách gồm: thông tin sách muốn nhập và số lượng, khi đó nhà cung cấp sẽ giao cho thủ thư đơn đặt hàng.
Một quyển sách được cung cấp bởi nhiều nhà cung cấp và nhà cung cấp có thể cung cấp nhiều sách.
Sau khi sách được giao, thủ thư tiến hành kiểm tra sách đã mua có bị lỗi, đúng số lượng và sách muốn nhập hay không Nếu các thông tin hợp lệ thì thủ thư tiến hành thanh toán hóa đơn cho nhà cung cấp.
Thông tin hóa đơn sẽ được dùng để làm thủ tục thanh toán với bộ phận kế toán trên cơ sở hóa đơn mua sách.
Trang 5 Sách vừa nhập sẽ được thủ thư cập nhập lại số lượng và thông tin của sách vào hồ sơ sách Nếu sách chưa có trong thư viện thì thủ thư tiến hành xử lý phân loại, đánh dấu mã sách cho sách,thông tin sách sẽ được lưu vào hồ sơ sách
Thủ thư sẽ lập báo cáo về tình hình thư viện gồm: số lượng học sinh đăng kí thẻ thư viện và danh sách, số lượng sách được mượn qua sổ độc giả, số lượng các vi phạm và danh sách các sinh viên vi phạm + lý
do, số lượng sách nhập vào thư viện và thông tin sách đó.
3 THIẾT KẾ CƠ SỞ DỮ LIỆU
3.1 Xây dựng mô hình thực thể liên kết
Các thực thể và thuộc tính ban dầu:
Nhân Viên(MaNhanVien , HoTen, GioiTinh, DiaChi, SDT,
NgaySinh, TaiKhoan, MatKhau)
Sinh Viên (Mssv, HoTen, GioiTinh, Lop, Khoa, NgaySinh, DiaChi)
Sách (MaSach, TenSach, SoLuongSach, Gia, NamXuatBan)
Nhà xuất bản (MaNhaXuatBan, TenNhaXuatBan)
Tác giả (MaTacGia, TenTacGia)
Nhà cung cấp (MaNhaCungCap, tenNCC)
Thể loại (MaTheLoai, TenTheLoai)
Phiếu mượn (MaPhieuMuon, NgayMuon, NgayTra, SoLuong)
Biên bản sự cố (MaBienBan, LoiViPham, BienPhapXuLi, NgayLap)
3.1.1 Xác định quan hệ trong CSDL quản lý thư viện
Mối quan hệ giữa thực thể SACH và thực thể THELOAI là quan hệ n-1: Một sách chỉ thuộc một thể loại, một thể loại có thể có một hoặc nhiều sách.
Trang 6 Mối quán hệ giữa thực thể SACH và thực thể TACGIA là quan hệ n-n : Một sách
có thể được viết bởi nhiều tác giả và một tác giả cũng có thể viết nhiều sách.
Mối quan hệ giữa thực thể SACH và thực thể NHAXUATBAN là quan hệ n-1: Một sách chỉ thuộc một nhà xuất bản, một nhà xuất bản có thể xuất bản nhiều sách
Mối quan hệ giữa thực thể SACH và thực thể PHIEUMUON là quan hệ n-n: Một sách có thể được mượn nhiều lần, một lần có thể mượn được nhiều sách
Mối quan hệ giữa thực thể SINHVIEN và thực thể PHIEUMUON là quan hệ 1-n: Một sinh viên có thể mượn sách nhiều lần, một phiếu mượn chỉ thuộc 1 sinh viên
Mối quan hệ giữa thực thể NHANVIEN và thực thể PHIEUMUON là quan hệ n: Một nhân viên có thể lập nhiều phiếu mượn, một phiếu mượn chỉ được lập mới một nhân viên
1- Mối quan hệ giữa thực thể PHIEUMUON và thực thể BIENBANXULY là quan
hệ 1-1
Trang 7 Mối quan hệ giữa thực thể NHANVIEN và thực thể BIENBANXULY là quan hệ 1-n: Một nhân viên có thể lập nhiều biên bản xử lý, một biên bản xử lý chỉ được lập bởi một nhân viên
3.1.2 Mô hình thực thể liên kết
3.2 Chuẩn hóa mô hình quan hệ
* NhanVien:
- Tách TaiKhoan, MatKhau, LoaiTaiKhoan ra thành 1 bảng TaiKhoan quan
hệ giữa TaiKhoan và thực thể NhanVien là mỗi quan hệ 1-1
+ TaiKhoan(TaiKhoan, MatKhau, LoaiTaiKhoan, MaNV)
Trang 8+ NhanVien(MaNV, HoTen, GioiTinh, NgaySinh, SDT, DiaChi)
* SinhVien(MSSV, HoTen, GioiTinh, Lop, Khoa, NgaySinh, DiaChi)
* TheLoai(MaTL, TenTheLoai)
* NhaXuatBan(MaNXB, TenNXB)
* TacGia(MaTG, TenTG)
* Sach:
- Sẽ có những quyển sách giống nhau nên sẽ tách ra 2 bảng DauSach và
QuyenSach liên kết giữa DauSach và QuyenSach là liên kết 1 – n nên MaDauSach
là khóa ngoại của QuyenSach
+ QuyenSach(MaQuyenSach, MaDauSach)
- TheLoai, NhaXuatBan với Sach là liên kết 1 – n nên MaTL và MaNXB là khóa ngoại của DauSach
+ DauSach(MaDauSach, TenSach, NamXuatBan, MaTL, MaNXB)
- TacGia với Sach là liên kết n – n nên ta có bảng mới :
+ Sach_TacGia(MaSach, MaTG)
* PhieuMuon:
- NhanVien và SinhVien với PhieuMuon là liên kết 1 – n nên MaNV và MSSV
là khóa ngoại của PhieuMuon
+ PhieuMuon(MaPM, NgayMuon, NgayHenTra, SoLuong, MaNV, MSSV)
- Sach với PhieuMuon là liên kết n – n nên ta có bảng mới :
+ ChiTietPhieuMuon(MaPM, MaSach, TinhTrang, NgayTra)
* BienBanXuLy:
- NhanVien với BienBanXuLy là liên kết 1 – n và PhieuMuon với
BienBanXuLy là liên kết 1 -1 nên MaNV và MaPM là khóa ngoại của
BienBanXuLy
+ BienBanXuLy(MaBB, NgayLap, LoiViPham, PPXL, MaNV, MaPM)
4 MÔ TẢ CHI TIẾT CÁC RÀNG BUỘC
4.1 Nhân viên
Trang 9STT Tên
PRIMARY KEY NOT NULL
Mã nhân viên
đủ
4.2 Tài khoản
3 LoaiTaiKhoan NVARCHAR(20
REFERENCES NHANVIEN(MaNV) ON DELETE CASCADE
Mã số sinh viên
4.4 Thể loại
Trang 10NOT NULL
4.5 Nhà xuất bản
ST
PRIMARY KEY NOT NULL
Mã nhà xuất bản
4.6 Sách
ST
PRIMARY KEY NOT NULL
Mã đầu sách
bản
FOREIGN KEY(MaTL) REFERENCES
THELOAI(MaTL)
ON DELETE SET NULL
Mã thể loại
FOREIGN KEY(MaNXB) REFERENCES
NHAXUATBAN(MaNXB)
ON DELETE SET NULL
Mã nhà xuất bản
4.7 Quyển sách
ST
PRIMARYKEY NOT NULL
Mã 1 quyển sách
FOREIGN KEY(MaSach) REFERENCES
Mã đầu sách
Trang 114.8 Tác giả
ST
PRIMARY KEY NOT NULL
Mã tác giả
4.9 Sách – tác giả
ST
KEY(MaDauSach) REFERENCES DAUSACH(MaDauSach)
ON DELETE CASCADE
Mã sách
REFERENCES TACGIA(MaTG)
ON DELETE CASCADE
Mã tác giả
4.10 Phiếu mượn
ST
PRIMARY KEY NOT NULL
Mã phiếu mượn
KEY(MaNV) REFERENCES NHANVIEN(MaNV) NULL
Mã nhân viên
Trang 12ON DELETE SET NULL
KEY(MSSV) REFERENCES SINHVIEN(MSSV) NULL
ON DELETE SET NULL
Mã số sinh viên
4.11 Chi tiết phiếu mượn
ST
KEY(MaPhieuMuon) REFERENCES PHIEUMUON(MaPhieuMuon) NOT NULL
Mã phiếu mượn
KEY(MaQuyenSach) REFERENCES QUYENSACH(MaQuyenSach) NULL
ON DELETE SET NULL
Mã Sách
4.12 Biên bản xử lý
ST
PRIMARY KEY NOT NULL
Mã biên bản xử lý
KEY(MaPhieuMuon) REFERENCES PHIEUMUON(MaPhieuMuon) NOT NULL
Mã phiếu mượn
Trang 13REFERENCES NHANVIEN(MaNV) NULL
ON DELETE SET NULL
nhân viên
lập biên bản
phạm
như thế nào
Diagram_QLTV
Trang 145 DỮ LIỆU CÁC BẢNG 5.1 Bảng Nhân Viên
Trang 155.2 Bảng Tài Khoản
Trang 165.3 Bảng Sinh Viên
5.4 Bảng Thể Loại
Trang 175.5 Bảng Nhà Xuất Bản
Trang 185.6 Bảng Đầu Sách
5.7 Bảng Quyển Sách
5.8 Bảng Tác Giả
Trang 195.9 Bảng Sách_Tác Giả
5.10 Bảng Phiếu Mượn
Trang 205.11 Bảng Chi Tiết Phiếu Mượn
5.12 Bảng Biên Bản Xử Lý
6 CÁC TRUY VẤN
Trang 21Nghiệp vụ Kỹ thuật Giải Quyết
Hiển thị danh
sách SÁCH View
CREATE VIEW v_Sach as SELECT
S2.MADAUSACH,S2.TENSACH,STUFF((SELECT ',' TENTG
FROM (SELECT stg.MADAUSACH,tg.TENTG FROM dbo.SACH_TACGIA stg
INNER JOIN dbo.TACGIA tg ON tg.MATG = stg.MATG) AS S1
WHERE S1.MADAUSACH = S2.MADAUSACH
FOR XML PATH('')),1 1 '') AS TENTG,S2.TENTL,S2.TENNXB,S2.NAMXB
FROM
(SELECT
q
s MAQUYENSACH, MADAUSACH, TENSACH,tl.TENTL,nxb.TENNXB, NAMXB
FROM dbo.DAUSACH s
INNER JOIN dbo.THELOAI tl ON tl.MATL = s.MATL
INNER JOIN dbo.NHAXUATBAN nxb ON nxb.MANXB = s.MANXB
INNER JOIN dbo.QUYENSACH qs ON qs.MADAUSACH = s.MADAUSACH
View CREATE VIEW v_NhanVien AS SELECT NHANVIEN.MANV, HOTEN,
GIOITINH, NGAYSINH, SDT, DIACHI, TAIKHOAN, MATKHAU,
LOAITAIKHOAN FROM dbo.NHANVIEN
INNER JOIN dbo.TAIKHOAN ON TAIKHOAN.MANV = NHANVIEN.MANV
Hiển thị danh
sách SINH
VIÊN
View CREATE VIEW v_SinhVien as SELECT FROM dbo.SINHVIEN
SELECT FROM v_SinhVien
View CREATE VIEW v_PhieuMuonChuaTra AS SELECT chuatra.MAPHIEUMUON,
NHANVIEN.HOTEN AS N'TENNHANVIEN', SINHVIEN.HOTEN AS
'TENSINHVIEN' SOLUONG, NGAYMUON, NGAYHENTRA FROM
dbo.PHIEUMUON INNER JOIN(SELECT CHITIETPHIEUMUON.MAPHIEUMUON FROM dbo.PHIEUMUON
INNER JOIN dbo.CHITIETPHIEUMUON ON CHITIETPHIEUMUON.MAPHIEUMUON
= PHIEUMUON.MAPHIEUMUON
WHERE TRANGTHAI LIKE N'Chưa trả'
GROUP BY CHITIETPHIEUMUON.MAPHIEUMUON) AS chuatra ON
chuatra.MAPHIEUMUON = PHIEUMUON.MAPHIEUMUON
INNER JOIN dbo.SINHVIEN ON SINHVIEN.MSSV = PHIEUMUON.MSSV
INNER JOIN dbo.NHANVIEN ON NHANVIEN.MANV = PHIEUMUON.MANV
WHEN 1 THEN N'Đã trả'
WHEN 0 THEN N'Chưa trả'
END
) AS TRANGTHAI
FROM dbo.CHITIETPHIEUMUON ctpm
INNER JOIN dbo.QUYENSACH qs ON qs.MAQUYENSACH=ctpm.MAQUYENSACH
INNER JOIN dbo.DAUSACH ds ON ds.MADAUSACH=qs.MADAUSACH
WHERE ctpm.TRANGTHAI = 0
Hiển thị danh
sách BIÊN
BẢN XỬ LÝ
View CREATE VIEW v_BienBanXuLy AS SELECT bbxl.MABIENBAN,
bbxl.MAPHIEUMUON, nv.HOTEN AS 'TENNHANVIEN', sv.HOTEN AS
'TENSINHVIEN', bbxl.NGAYLAP, bbxl.LOIVIPHAM, bbxl.XULY
FROM dbo.BIENBANXULY bbxl
INNER JOIN dbo.PHIEUMUON pm ON pm.MAPHIEUMUON =
bbxl.MAPHIEUMUON
INNER JOIN dbo.NHANVIEN nv ON nv.MANV = bbxl.MANV
INNER JOIN dbo.SINHVIEN sv ON sv.MSSV = pm.MSSV
Hiển thị danh View CREATE VIEW v_SachTraTreQuaHan AS SELECT ctpm.MAPHIEUMUON,
Trang 22sách SÁCH trả
trễ
nv.HOTEN AS N'TENNHANVIEN',sv.HOTEN AS
'TENSINHVIEN',ds.TENSACH,pm.NGAYMUON,pm.NGAYHENTRA
FROM dbo.PHIEUMUON pm
INNER JOIN dbo.CHITIETPHIEUMUON ctpm ON ctpm.MAPHIEUMUON =
pm.MAPHIEUMUON
INNER JOIN dbo.SINHVIEN sv ON sv.MSSV = pm.MSSV
INNER JOIN dbo.NHANVIEN nv ON nv.MANV = pm.MANV
INNER JOIN dbo.QUYENSACH qs ON qs.MAQUYENSACH =
ctpm.MAQUYENSACH
INNER JOIN dbo.DAUSACH ds ON ds.MADAUSACH=qs.MAQUYENSACH
WHERE ctpm.TRANGTHAI =AND GETDATE()>pm.NGAYHENTRA
WHERE bbxl.NGAYLAP >@ngaybd AND bbxl.NGAYLAP <@ngaykt
INNER JOIN dbo.DAUSACH ds ON ds.MADAUSACH=qs.MADAUSACH
WHERE pm.NGAYMUON>@ngaybd AND pm.NGAYMUON<@ngaykt
WHILE(@i< (SELECT TOP 1 id FROM
fc_TachChuoiThanhBang(@tentg,',') ORDER BY id DESC)+1
BEGINDECLARE @ten1tacgia NVARCHAR(MAX)
SELECT @ten1tacgia=item FROM
INSERT INTO dbo.TACGIA VALUES(@ten1tacgia)
SELECT TOP 1 @matg =tg.MATG FROM dbo.TACGIA tg
ORDER BY tg.MATG DESC
Trang 23SELECT @matg =MATG FROM dbo.TACGIA
WHERE TENTG=@ten1tacgia
ENDINSERT INTO dbo.SACH_TACGIA VALUES (@madausach,@matg)
FROM (SELECT stg.MADAUSACH,tg.TENTG FROM dbo.SACH_TACGIA stg
INNER JOIN dbo.TACGIA tg ON tg.MATG = stg.MATG) AS S1
WHERE S1.MADAUSACH = S2.MADAUSACH
FOR XML PATH('')),1 1 '') AS TENTG,S2.TENTL,S2.TENNXB,S2.NAMXB
FROM
(SELECT
q
s MAQUYENSACH, MADAUSACH, TENSACH,tl.TENTL,nxb.TENNXB, NAMXB
FROM dbo.DAUSACH s
INNER JOIN dbo.THELOAI tl ON tl.MATL = s.MATL
INNER JOIN dbo.NHAXUATBAN nxb ON nxb.MANXB = s.MANXB
INNER JOIN dbo.QUYENSACH qs ON qs.MADAUSACH = s.MADAUSACH
) AS S2 WHERE S2.MADAUSACH=@madausach END
Kiểm tra mã Function CREATE FUNCTION fc_CheckMa(@matruoc INT,@masau INT)
RETURNS INTAS
BEGIN DECLARE @num INT
BEGIN
DECLARE @tennv NVARCHAR(50), @gioitinh NVARCHAR( ), @ngaysinh
DATE, @sdt CHAR(10), @diachi NVARCHAR(100)
DECLARE @taikhoan VARCHAR(20), @matkhau VARCHAR(20),
@loaitaikhoan NVARCHAR(20)
SELECT @tennv=ins.HOTEN FROM Inserted ins
SELECT @gioitinh=ins.GIOITINH FROM Inserted ins
SELECT @ngaysinh=ins.NGAYSINH FROM Inserted ins
SELECT @sdt=ins.SDT FROM Inserted ins
SELECT @diachi=ins.DIACHI FROM Inserted ins
Trang 24SELECT @taikhoan=ins.TAIKHOAN FROM Inserted ins
SELECT @matkhau=ins.MATKHAU FROM Inserted ins
SELECT @loaitaikhoan=ins.LOAITAIKHOAN FROM Inserted ins
INSERT INTO dbo.NHANVIEN
VALUES(@tennv,@gioitinh,@ngaysinh,@sdt,@diachi)
DECLARE @manv VARCHAR(10)
SELECT TOP 1 @manv=MANV FROM dbo.NHANVIEN
ORDER BY MANV DESCINSERT INTO dbo.TAIKHOAN
VALUES(@taikhoan,@matkhau,@manv,@loaitaikhoan)
RETURNS @output TABLE(
id INT IDENTITY( , ) NOT NULL,
item NVARCHAR(200) NULL)
ASBEGIN
DECLARE @start INT,@end INT
SELECT @start= ,@end=CHARINDEX(@kytu,@mystring)
WHILE @start<LEN(@mystring)+1
BEGIN
IF @end=
SET @end=LEN(@mystring)+1
INSERT INTO @output(item)
VALUES(LTRIM(RTRIM(SUBSTRING(@mystring,@start,@end-@start))))
SET @start=@end+
SET @end=CHARINDEX(@kytu,@mystring,@start)
ENDRETURNEND
DECLARE @manvtruoc INT, @manvsau INT, @tennv NVARCHAR(50),
@gioitinh NVARCHAR( ), @ngaysinh DATE, @sdt CHAR(10) ,@diachi
NVARCHAR(100)
DECLARE @taikhoantruoc VARCHAR(20), @taikhoansau VARCHAR(20),
@matkhau VARCHAR(20), @loaitaikhoan NVARCHAR(20)
SELECT @manvtruoc=dlt.MANV FROM Deleted dlt
SELECT @manvsau=ins.MANV FROM Inserted ins
SELECT @tennv=ins.HOTEN FROM Inserted ins
SELECT @gioitinh=ins.GIOITINH FROM Inserted ins
SELECT @ngaysinh=ins.NGAYSINH FROM Inserted ins
SELECT @sdt=ins.SDT FROM Inserted ins
SELECT @diachi=ins.DIACHI FROM Inserted ins
SELECT @taikhoantruoc=dlt.TAIKHOAN FROM Deleted dlt
SELECT @taikhoansau=ins.TAIKHOAN FROM Inserted ins
SELECT @matkhau=ins.MATKHAU FROM Inserted ins
SELECT @loaitaikhoan=ins.LOAITAIKHOAN FROM Inserted ins
IF((SELECT dbo.fc_CheckMa(@manvtruoc, @manvsau))=-1
ROLLBACK TRAN