Professional Documents
Culture Documents
VIEW
select * from kh
select * from hd
select * from SP
select * from cthd
--
1)Tạo view vw_Products_Info hiển thị danh sách
các sản phẩm từ bảng Products và bảng Categories.
Thông tin bao gồm CategoryName, Description,
ProductName, QuantityPerUnit, UnitPrice, UnitsInStock
CREATE VIEW LOAISP_SP
AS
SELECT CATEGORYNAME, DESCRIPTION, PRODUCTNAME,
QUANTITYPERUNIT, UNITPRICE, UNITSINSTOCK
FROM Categories C JOIN PRODUCTS P
ON C.CATEGORYID =P.CATEGORYID
--XEM THÔNG TIN CUA VIEW
SELECT * FROM LOAISP_SP
--XEM THÔNG TIN TRO GIUP VE VIWE
SP_HELPTEXT LOAISP_SP
2) Tạo view List_Product_view chứa danh sách các
sản phẩm dạng hộp (box) có đơn giá > 16,
thông tin gồm ProductID, ProductName, UnitPrice,
QuantityPerUnit, COUNT of OrderID
3) Tạo view vw_CustomerTotals hiển thị
tổng tiền bán được từ mỗi khách hàng theo
tháng và theo năm.
Thông tin gồm CustomerID, YEAR(OrderDate) AS OrderYear,
MONTH(OrderDate) AS OrderMonth,
SUM(UnitPrice*Quantity).
CREATE VIEW HD_KH
AS
SELECT CUSTOMERID, NAM =YEAR(ORDERDATE),
THANG=MONTH(ORDERDATE), TONGTIEN=SUM(UNITPRICE*QUANTITY)
FROM ORDERS O JOIN [ORDER DETAILS] OD
ON O.ORDERID = OD.ORDERID
GROUP BY CUSTOMERID, YEAR(ORDERDATE),
MONTH(ORDERDATE)
SP_HELPTEXT HD_KH
SELECT * FROM HD_KH
--XOAVIEW
DROP VIEW HD_KH
--DE MA HOA CAU LENH
SP_HELPTEXT HD_KH
4) Tạo view trả về tổng số lượng sản phẩm
bán được của mỗi nhân viên (Employee)
theo từng năm.
Thông tin gồm EmployeeID, OrderYear, sumOfOrderQuantity
SELECT * FROM C9
SP_HELPTEXT C9
SELECT * FROM CUSTOMERS
b. Chèn thêm một khách hàng mới ở thành phố London và một khách hàng mới ở
thành phố Madrid. Dùng câu lệnh select trên bảng Customers để xem kết quả .
--
DROP TABLE DONVI
DROP TABLE NHANVIEN
CREATE TABLE donvi
( madv INT PRIMARY KEY,
tendv NVARCHAR(30) NOT NULL,
dienthoai NVARCHAR(10) NULL
)
CREATE TABLE nhanvien
( manv NVARCHAR(10) PRIMARY KEY,
hoten NVARCHAR(30) NOT NULL,
ngaysinh DATETIME NULL,
diachi NVARCHAR(50) NULL,
madv INT FOREIGN KEY
REFERENCES donvi(madv)
ON DELETE CASCADE
ON UPDATE CASCADE
)
--Ví dụ: Xét định nghĩa hai bảng DONVI và NHANVIEN như sau:
Insert into DonVi (Madv, Tendv, DienThoai) values (1,'P.Kinh doanh','822321')
Insert into DonVi (Madv, Tendv, DienThoai) values (2,'Tiep thi','822012')
2) Tạo view List_Product_view chứa danh sách các sản phẩm dạng hộp (box) có đơn
giá > 16, thông tin gồm ProductID, ProductName, UnitPrice, QuantityPerUnit, COUNT
of OrderID
3) Tạo view vw_CustomerTotals hiển thị tổng tiền
bán được từ mỗi khách hàng theo tháng và theo năm.
Thông tin gồm CustomerID, YEAR(OrderDate) AS OrderYear,
MONTH(OrderDate) AS OrderMonth,
SUM(UnitPrice*Quantity).
CREATE VIEW vw_CustomerTotals
AS
SELECT CUSTOMERID, NAM =YEAR(ORDERDATE),
THANG =MONTH(ORDERDATE),
TONGTIEN =SUM(UNITPRICE*QUANTITY)
FROM ORDERS O JOIN dbo.[Order Details] OD
ON O.ORDERID =OD.ORDERID
GROUP BY CUSTOMERID, YEAR(ORDERDATE),
MONTH(ORDERDATE)
SELECT * FROM dbo.vw_CustomerTotals
--XOA VIEW
DROP VIEW vw_CustomerTotals
CREATE VIEW vw_CustomerTotals
AS
SELECT CUSTOMERID,
THANGNAM =CONVERT(CHAR(2),MONTH(ORDERDATE))+'/'+
CONVERT(CHAR(4),YEAR(ORDERDATE)),
TONGTIEN =SUM(UNITPRICE*QUANTITY)
FROM ORDERS O JOIN dbo.[Order Details] OD
ON O.ORDERID =OD.ORDERID
GROUP BY CUSTOMERID, CONVERT(CHAR(2),MONTH(ORDERDATE))
+'/'+
CONVERT(CHAR(4),YEAR(ORDERDATE))
SELECT * FROM vw_CustomerTotals
--XEM CODE CUA VIEW
SP_HELPTEXT vw_CustomerTotals
4) Tạo view trả về tổng số lượng sản phẩm bán được của mỗi nhân viên (Employee)
theo từng năm. Thông tin gồm EmployeeID, OrderYear, sumOfOrderQuantity
5) Tạo view ListCustomer_view chứa danh sách các khách hàng có trên 5 hóa đơn
đặt hàng từ năm 1997 đến 1998, thông tin gồm mã khách (CustomerID) , họ tên
(CompanyName), Số hóa đơn (CountOfOrders).
6) Tạo view ListProduct_view chứa danh sách những sản phẩm nhóm Beverages và
Seafood có tổng số lượng bán trong mỗi năm trên 30 sản phẩm, thông tin gồm
CategoryName, ProductName, Year, SumOfOrderQuantity.
7) Tạo view vw_OrderSummary với từ khóa
WITH ENCRYPTION gồm OrderYear
(năm của ngày lập hóa đơn), OrderMonth
(tháng của ngày lập hóa đơn), OrderTotal
(tổng tiền, =UnitPrice*Quantity).
Sau đó xem thông tin và trợ giúp về mã lệnh của
view này
CREATE VIEW VW_ORDERSUMARY
WITH ENCRYPTION
AS
SELECT ORDERYEAR =YEAR(ORDERDATE),
ORDERMONTH=MONTH(ORDERDATE),
ORDERTOTAL =SUM(QUANTITY*UNITPRICE)
FROM ORDERS O JOIN [ORDER DETAILS] OD
ON O.ORDERID =OD.ORDERID
GROUP BY YEAR(ORDERDATE),
MONTH(ORDERDATE)
SELECT * FROM VW_ORDERSUMARY
SP_HELPTEXT VW_ORDERSUMARY
--
SELECT ORDERTOTAL =SUM(QUANTITY*UNITPRICE),
ORDERYEAR =YEAR(ORDERDATE),
ORDERMONTH=MONTH(ORDERDATE)
GO
UPDATE CustomersLD SET city='Anh Quoc'
WHERE CustomerID='3333'
DROP VIEW CUSTOMERSLD
ALTER VIEW CustomerSLD AS
SELECT * FROM Customers WHERE city='LonDon'
--WITH CHECK OPTION
Select * from CustomerSLD
SELECT * FROM CUSTOMERS WHERE CUSTOMERID ='3333'
GO
UPDATE CustomersLD SET city='Anh Quoc'
WHERE CustomerID='SEVES'
9) Tạo view vw_Customer với từ khóa WITH CHECK OPTION chỉ chứa các khách
hàng ở thành phố London và Madrid, thông tin gồm: CustomerID, CompanyName, City.
a. Chèn thêm một khách hàng mới không ở thành phố London và Madrid thông qua view
vừa tạo. Có chèn được không? Giải thích.
b. Chèn thêm một khách hàng mới ở thành phố London và một khách hàng mới ở
thành phố Madrid. Dùng câu lệnh select trên bảng Customers để xem kết quả .
CREATE TABLE donvi1
( madv INT PRIMARY KEY,
tendv NVARCHAR(30) NOT NULL,
dienthoai NVARCHAR(10) NULL
)
CREATE TABLE nhanvien1
( manv NVARCHAR(10) PRIMARY KEY,
hoten NVARCHAR(30) NOT NULL,
ngaysinh DATETIME NULL,
diachi NVARCHAR(50) NULL,
madv INT FOREIGN KEY
REFERENCES donvi1(madv)
ON DELETE CASCADE
ON UPDATE CASCADE
)
Set @b = @b *100
End
--Thưc thi
print 'Tong tien phai tra ='+convert(char(10),dbo.Tiendien())
--thuc thi
set dateformat dmy
declare @ngay date
set @ngay ='16/1/1997'
print 'Hom nay la thu ='+dbo.thu(@ngay)
RETURN
END
--
SELECT * FROM BAI9(NULL)
IV. TRIGGER
--
drop table lop1
drop table sv1
create table lop1(malop int , tenlop nvarchar(30), siso int)
create table sv1 (masv int, tensv nvarchar(40), malop int)
insert lop1 values(1,'dhtmdt',0)
select * from lop1
--viet 1 trigger khi them vao 1 sv thuoc mot lop nao do thi siso tu dong tang len
create trigger vd1
on SV1
FOR INSERT
AS
BEGIN
UPDATE lop1
SET SISO =SISO+ 1--COUNT(*) FROM inserted
WHERE malop IN (SELECT malop FROM inserted)
END
INSERT sv1 VALUES(1,'LAN',1)
INSERT sv1 VALUES(2,'MINH',1)
SELECT * FROM SV1
SELECT * FROM LOP1
--Ôn Triggers
CREATE TABLE HD
(MAHD INT, MAKH NCHAR(10),NGAYLAP DATE,NGAYGIAO DATE)
--TAO 1 TRIGGER KHI THEM 1 DONG DU LIEU VAO BANG HD1 NEU
NGAY LAP >NGAY GIAO THI HIEN TB LOI VA KHONG CHO THEM
CREATE TRIGGER KTNGAY
ON HD FOR INSERT
AS
BEGIN
DECLARE @NL DATE, @NG DATE
SELECT @NL =H.NGAYLAP FROM HD H JOIN inserted I ON H.MAHD
=I.MAHD
SELECT @NG =H.NGAYGIAO FROM HD H JOIN inserted I ON H.MAHD
=I.MAHD
IF (@NL>@NG)
BEGIN
PRINT 'NGAY GIAO PHAI LON HON HAY BANG NGAY LAP'
ROLLBACK TRAN
END
END
SET DATEFORMAT DMY
INSERT HD VALUES(1,'A','15/5/2018','10/5/2018')
SELECT * FROM HD
INSERT HD VALUES(1,'A','15/4/2018','10/5/2018')
SELECT * FROM HD
--
CREATE TABLE SP (MASP INT, TENSP NVARCHAR(40),SLTON SMALLINT)
SELECT * FROM SP
INSERT SP SELECT PRODUCTID, ProductName,UnitsInStock
FROM Products WHERE ProductName LIKE 'A%'
--DO DU LIEU VAO 1 BANG CHUA CO
SELECT PRODUCTID, ProductName,UnitsInStock INTO SPM
FROM Products WHERE ProductName LIKE 'A%'
SELECT * FROM SPM
--TAO BANG CTHD
CREATE TABLE CTHD (MAHD INT,MASP INT, SL INT, DG MONEY)
CREATE TRIGGER KTSLTON
ON CTHD FOR INSERT
AS
BEGIN
DECLARE @SL INT, @SLT INT
SELECT @SLT = SLTON FROM SP WHERE MASP IN (SELECT MASP
FROM INSERTED)
SELECT @SL =SL FROM INSERTED
IF(@SL>@SLT)
BEGIN
PRINT 'HET HANG'
ROLLBACK TRAN
END
END
--KIEM TRA TRIGGER
INSERT CTHD VALUES(1,3,180,300)
INSERT CTHD VALUES(1,3,80,300)
SELECT * FROM CTHD
--TAO 1 TRIGGER KHI BAN 1 SP THÌ TỰ ĐỘNG CẬP NHẬP LẠI SỐ LƯỢNG TÔN
CREATE TRIGGER SUASLTON
ON CTHD FOR INSERT
AS
BEGIN
DECLARE @SL INT, @SLT INT
SELECT @SLT = SLTON FROM SP WHERE MASP IN (SELECT MASP
FROM INSERTED)
SELECT @SL =SL FROM INSERTED
IF(@SL>@SLT)
BEGIN
PRINT 'HET HANG'
ROLLBACK TRAN
END
ELSE
BEGIN
UPDATE SP
SET SLTON =SLTON-@SL
WHERE MASP IN (SELECT MASP FROM INSERTED)
END
END
DELETE FROM CTHD
SELECT * FROM CTHD
--KIEM TRA TRIGGER
INSERT CTHD VALUES(1,3,180,300)
INSERT CTHD VALUES(1,3,80,300)
SELECT * FROM CTHD
SELECT * FROM SP
--VIẾT MỘT TRIGGER TƯ ĐỘNG CẬP NHẬP CỘT TONG TIEN CHO 1 HO DON
KHI HOA DON NAY MUA HANG
SELECT * FROM HD
ALTER TABLE HD ADD TONGTIEN MONEY
CREATE TRIGGER CAPNHAPTIEN
ON CTHD FOR INSERT
AS
BEGIN
DECLARE @TT MONEY
SELECT @TT =SUM(C.SL*C.DG) FROM CTHD C JOIN INSERTED I
ON C.MAHD=I.MAHD
UPDATE HD
SET TONGTIEN = @TT
WHERE MAHD IN (SELECT MAHD FROM INSERTED)
END
SELECT * FROM SP
SELECT * FROM HD
SELECT * FROM CTHD
INSERT CTHD VALUES(1,17,5,10)
--VIẾT 1 TRIGGER KHI XÓA 1 HÓA DON THI TU DONG XOA LUON CAC MAU
TIN TUONG UNG BEN BANG CTHD
CREATE TRIGGER XOA
ON HD FOR DELETE
AS
BEGIN
IF EXISTS(SELECT * FROM HD WHERE MAHD IN (SELECT MAHD
FROM DELETE))
DELETE FROM CTHD WHERE MAHD IN (SELECT MAHD FROM
DELETED)
ELSE
BEGIN
PRINT 'KHONG CO HD NAY'
ROLLBACK TRAN
END
END
SELECT * FROM HD
SELECT * FROM CTHD
DELETE FROM HD WHERE MAHD=1
select * from Production.Product
drop table sptam
Select * into spTam from Production.Product
select * from spTam
delete from sptam where productid =4
drop trigger Xoasp
CREATE TRIGGER XoaSp1
ON spTam
FOR DELETE
AS
IF(SELECT ProductID FROM Deleted)=1
BEGIN
Print 'Bạn không xóa được sp có mã Productid=1'
RollBack transaction
END
--
DROP TABLE LOP1
CREATE TABLE LOP1(MALOP CHAR(5), TENLOP NVARCHAR(30), SISO INT)
DROP TABLE SV1
CREATE TABLE SV1(MASV INT , TENSV NVARCHAR(40), MALOP CHAR(5))
--vIET 1 TRIGGER THEM VAO LOP 1 LOP MOI NEU MA LOP CO ROI THA BAO
LOI
ALTER TRIGGER KTLOP1
ON LOP1
INSTEAD OF INSERT
AS
IF(EXISTS (SELECT * FROM INSERTED I JOIN LOP1 L ON
I.MALOP=L.MALOP))
BEGIN
PRINT 'lOP NAY CO ROI, BAN NHAP MA KHAC'
ROLLBACK TRAN
END
--KIEM TRA TRIGGER
SELECT * FROM LOP1
INSERT LOP1 VALUES ('A','THB',40)
ALTER TRIGGER THEMsv1
ON SV1
FOR INSERT,UPDATE,DELETE
AS
BEGIN
-- DECLARE @SOSV INT
--SELECT @SOSV =COUNT(MALOP) FROM INSERTED
UPDATE LOP1
SET SISO =SISO +1
WHERE MALOP IN (SELECT MALOP FROM INSERTED)
END
SELECT * FROM LOP1
INSERT SV1 VALUES(1,'LAN','A')
INSERT SV1 VALUES(2,'MINH','A')
DELETE FROM SV1 WHERE MASV=1
--
drop table hd
select salesOrderid,customerid,orderdate,shipdate into hd from Sales.SalesOrderHeader
drop trigger Trg_NgayLap_NgayGiaoHD
CREATE TRIGGER Trg_NgayLap_NgayGiaoHD
ON hd AFTER INSERT
AS
DECLARE @NgayLapHD DateTime, @NgayGiao DateTime
SELECT @NgayLapHD=h.orderdate, @NgayGiao=h.shipdate
FROM hd h INNER JOIN Inserted i ON h.SalesOrderid=i.Salesorderid
If @NgayGiao<@NgayLapHD
BEGIN
RAISERROR(500103,10,1)
print N'Ngày lập phải lớn hơn hay bằng ngày hiện hành'
ROLLBACK TRANSACTION
END
set dateformat dmy
select * from hd
INSERT Hd (CustomerID,orderdate,shipdate) values
(1,'1/12/2017','30/9/2017')
--Kiem tra su ton tại
drop table SpTam
select productid,Name into sptam from Production.Product
select * from SPTam
drop trigger KTTT
--Kiem tra khóa chính
CREATE TRIGGER KTTT ON SPTam FOR INSERT AS
IF EXISTS (SELECT * FROM INSERTED I JOIN SPTam S ON S.Productid
=I.Productid)
BEGIN
SELECT 'CO SP NAY ROI, NHAP MA KHAC'
ROLLBACK TRANSACTION
END
SELECT * FROM SPtam WHERE productid=1
set identity_insert SPTam on
INSERT INTO SPTam(productid,name) VALUES (1,'TAO')
SELECT * FROM SPtam WHERE productid=1
--
CREATE TRIGGER ktTonTai ON hd FOR INSERT AS
IF EXISTS (SELECT * FROM INSERTED I inner join hd o
ON i.SalesOrderid = o.SalesOrderid )
BEGIN
print 'Hoa don nay co roi, nhap lai'
ROLLBACK TRANSACTION
END
set IDENTITY_INSERT SpTam Off
set IDENTITY_INSERT hd On
INSERT Hd (Salesorderid, CustomerID,orderdate,shipdate) values
(1,1,'1/1/2016','1/10/2016')
select * from hd
CREATE TABLE LOP(MALOP INT PRIMARY KEY, TENLOP NVARCHAR(20))
CREATE TABLE SV1(MASV NCHAR(5) PRIMARY KEY, TENSV
NVARCHAR(40), MALOP INT FOREIGN KEY (MALOP) REFERENCES
LOP(MALOP))
--xoa
create TRIGGER Trg_Xoa_HD
ON Orders AFTER DELETE
AS
SET NOCOUNT ON
IF EXISTS (SELECT * FROM Deleted)
BEGIN
DELETE [Order Details] WHERE [Order details].Orderid
IN (SELECT hd.Orderid FROM orders hd
INNER JOIN Deleted d ON hd.Orderid=d.Orderid)
RAISERROR('Cac chi tiet HD da bi xoa',10,1)
END
SET NOCOUNT ON
--------------------------------kiem tra cac rang buoc truoc khi chay cac trigger
alter table orders nocheck constraint all
alter table [order details] nocheck constraint all
DELETE Orders WHERE Orderid=10248
----
CREATE TRIGGER NoDelete12
ON Products
FOR DELETE AS
IF (SELECT Productid FROM deleted) = 12
BEGIN
PRINT 'You cannot delete the Productid =12'
ROLLBACK TRANSACTION
END
--
delete from products where productid =12
--kiem tra ton tai
--
CREATE VIEW sp_cthd
AS
SELECT o.Productid as ma1, p.Productid as ma2, ProductName , orderid
FROM Products p JOIN [order details] o
ON p.productid =o.productid
--
CREATE TRIGGER del_service
ON sp_cthd
INSTEAD OF DELETE
AS
DELETE Products WHERE Productid IN
(SELECT ma2 FROM DELETED)
DELETE [order details] WHERE productid IN
(SELECT ma1 FROM DELETED)
--
delete from products where productid =11
--
CREATE TRIGGER InsOrdDet ON [Order Details]
INSTEAD OF INSERT
AS
DECLARE @qty int
SELECT @qty=quantity FROM Inserted
IF @qty<= (SELECT UnitsInStock FROM Products P JOIN Inserted I ON P.ProductID
= I.ProductID)
INSERT INTO [Order Details]
SELECT * FROM Inserted
ELSE
RAISERROR('Not enough products in stock', 16, 1)
insert into [order details] values(10248,2,12,4545,0.1)
select * from [order details] where orderid =10248 and productid =2
--
CREATE VIEW [Alphabetical list of products1]
AS
SELECT Products.*, Categories.CategoryName
FROM Categories INNER JOIN Products
ON Categories.CategoryID = Products.CategoryID
WHERE Products.Discontinued=0
--
CREATE TRIGGER InsLP1 ON [Alphabetical list of products1]
INSTEAD OF INSERT
AS
IF EXISTS(SELECT * FROM Inserted I JOIN Category C
ON I.CategoryID=C.CategoryID)
INSERT INTO Products(ProductID, ProductName, SupplierID,
CategoryID, QuantityPerUnit, UnitPrice, UnitsInStock,
UnitsOnOrder, ReorderLevel, Discontinued)
SELECT ProductID, ProductName, SupplierID,
CategoryID, QuantityPerUnit, UnitPrice, UnitsInStock,
UnitsOnOrder, ReorderLevel, Discontinued
FROM Inserted
ELSE
begin
BEGIN TRANSACTION
INSERT INTO Category(CategoryName)
SELECT CategoryName FROM Inserted
INSERT INTO Products(ProductID, ProductName, SupplierID,
CategoryID, QuantityPerUnit, UnitPrice,
UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued)
SELECT ProductID, ProductName, SupplierID,
@@IDENTITY, QuantityPerUnit, UnitPrice,
UnitsInStock, UnitsOnOrder, ReorderLevel,
Discontinued FROM Inserted
COMMIT TRANSACTION
END
BÀI TẬP
HÀM
1) Hàm Function_HọTên_MSSV_1a trả về tổng số lần đặt hàng của một khách hàng tùy ý
( tham số truyền là CustomerID) (1đ)
2) Hàm Function_HọTên_MSSV_1b trả về kết quả là một bảng gồm các sản phẩm (Products)
của một nhà cung cấp (Suppliers) nào đó mà đã được bán (đã được đặt hàng). (1đ)
3) Viết hàm trả về thưởng của một nhân viên tùy ý trong một tháng và một năm bất kỳ (truyền
vào MaNV, tháng, năm). Thưởng của mỗi nhân viên được tính theo qui tắc sau: nếu tổng tiền
thu được của 1 nhân viên trên 5000000 thì thì thưởng là 1000000, từ 2 tới 5 thì thưởng là
500000, còn lại là 0.
4) Viết hàm trả về kết quả là một bảng (Table), viết bằng Inline Table-Valued Functions hoặc
Multistatement Table-Valued. Thông tin gồm: MaNV, HoTen, NgaySinh, TongLuongTB.
5) Viết hàm trả về chiết khấu dựa vào số lượng lập hoá đơn và theo quy định sau:
Chiết khấu = 5%* GIABAN nếu Soluong <5
Thủ tục:
1) Viết thủ tục SUM_SALARY để tính tổng tiền (20% *sum(quantity*unitprice) )phải trả
cho nhân viên với tham số truyền vào là mã nhân viên.
2) Viết thủ tục dùng để cập nhật ngày giao hàng là ngày lập hóa đơn cộng thêm 5 (ngày) cho
những hóa đơn của khách hàng ở một thành phố bất kỳ. Tham số truyền vào là field
thành phố.
3) Viết một thủ tục dùng để lấy về tổng số lượng đơn đặt hàng và tổng tiền của một
khách hàng nào đó trong một năm bất kỳ.
4) Viết thủ tục dùng để xóa 1 hóa đơn khi biết MaHD. Lưu ý trước khi xóa mẫu tin
trong hóa đơn thì phải xóa các mẫu tin của các chi tiết hóa đơn đó. Nếu không
xoá được hóa đơn thì cũng không được phép xóa chi tiết hóa đơn của hóa đơn đó.
5) Viết thủ tục có tham số dùng để cập nhật dữ liệu mới của một mẫu tin nào đó khi
biết MaKh trong bảng Orders.
TRIGGER
1) Thêm vào cột Total_Order trong bảng Orders. Tạo triggers trên bảng Order Details
cho thao tác Insert, Update, Delete sao cho khi có thao tác thêm, cập nhật hay xóa dữ
liệu trên bảng Order Details thì dữ liệu của cột Total_Order trong bảng Orders được
sửa đổi tương ứng. Total_Order là tổng tiền phải trả cho mỗi OrderID =
Sum(UnitPrice – Discount)*Quantity.
2) Thêm một cột TongLuong vào trong bảng Employees. Viết trigger cho thao tác insert
trên bảng Orders. Khi có mẫu tin được thêm vào thì TongLuong được tính bằng công
thức sau:
TongLuong =20% *sum(quantity*unitprice) của mỗi nhân viên
3) Viết trigger cho thao tác Insert, Update, Delete trên bảng [Order Details]
(CHITIETHOADON). Khi có mẫu tin được chèn vào hoặc hiệu chỉnh hoặc
xoá thì cập nhật lại cột TongTriGia trong bảng Orders với TongTriGia =
Tổng tiền của Số lượng * Đơn giá. Lưu ý: nếu bảng Orders chưa có cột
TongTriGia thì bổ sung vào trước khi kiểm chứng trigger.
4) Viết 1 trigger ràng buộc liên thuộc tính là ngày bán của một HOADON thì luôn
luôn lớn hơn hay bằng ngày lập hóa đơn .
5) Viết 1 trigger cho lệnh insert, delete trên bảng [order Details) thi thêm hay xóa dữ
liệu trên bảng này phải nhập số lượng tồn (UnitInStock) trong bảng Products