Upload
know2pro
View
241
Download
16
Embed Size (px)
DESCRIPTION
DBMS ไทย บทที่ 15 การสร้าง และการจัดการกับทริกเกอร์(Triggers)
Citation preview
15
15
(Triggers)
(Triggers) Data Integrity Constraints SQL Server Data Integrity Constraints Stored Procedure SQL Server
Stored Procedures,Rule Defaults Data Integrity Rule Defaults Stored Procedure Data Integrity Contraints Constraints Constraints Denormalized Data Normalization Normalization SQL Server 2 1. AFTER 2. INSTEAD OF AFTER
sysadmin fixed server role, db_owner db_ddladmin fixed database roles () CREATE TRIGGER[OWNER].Trigger_name
ON[OWNER].Table_Name
FOR{INSERT,DELETE,UPDATE}
[WITH ENCRYPTION]
AS
BEGIN
Sql_Statements/* Transact-SQL */END
Trigger_name Server
INSERT, DELETE UPDATE WITH ENCRYPTION Sql_Statements Transact-SQL BEGIN END
UPDATE, INSERT, DELETE INSERT
INSERT INSERT TblOrders
CREATE TRGGER Check_Orders ON TbiOrders
FOR INSERT,UPDATE
AS
BEGIN
DECLARE@DayOfMonth tinyint
SELECT@DayOfMonth = DatePart(Day,l.OrderDate)
FROM TblOrders O.OrderIL=l.OrderID
IF@DayOfMonth>15
BEGIN
ROLLBACKTRAN
RAISERROR(Orders must be placed before the 15th of the month,16,10)
END
END
INSERT UPDATE INSERT INSERT OrderDate 15 INSERTED INSERT UPDATE 2 1. INSERT INSERTED INSERTED 2. UPDATE DELETED INSERTED UPDATE
IF UPDATE() Column Unitprice Modified Unitprice TblProducts CREATE TRIGGER CheckPrice ON TblProducts
FOR UPDATE
AS
BEGIN
IF UPDATE(Unitprice)
PRINTColumn Unitprice Modified
END
Unitprice IF Column Unitprice Modified
DELETE
2 1. Data Integrity Foreign Key 2. TblOrders TblOrdersDetails Note @@ROWCOUNT
DELETE TblCustomersCREATE TRIGGER Check_Customers ON TblCustomers
FOR DELETE
AS
BEGIN
IF @@ROWCOUNT>1
BEGIN
ROLLBACK TRAN
RAISERROR(You can only delete one row at a time.,16,10)
END
END
TblCustormers Note INSERTED DELETED INSERT,UPDATE,DELETE INSERTED DELETE
SQL Server INSERTED INSERT
DELETED DELETE
INSERTED DELETE UPDATE1. DELETED DELETE UPDATE DELETE UPDATE DELETED
2. INSERTED INSERT UPDATE INSERT INSERTED UPDATE DELETED INSERTED INSTEAD OF
AFTER Instead Of Trigger ( INSERT, UPDATE, DELETE ) AFTER INSTEAD OF ProductID TblProducts
INSERTED DELETED INSTEAD OF Trigger
INSTEAD OF INSERTED DELETED AFTER INSTEAD OF SQL Server INSERTED DELETED CREATE VIEW Customerinfo
AS
SELECT CustomerName, CustomerAddress, Telephon FROM TblCustomers
3 INSERTED DELETED CustomerName, CustomerAddress, Telephon INSTEAD OF
INSTEAD OF AFTER CREATE TRIGGERON
INSTEAD OF
AS BEGIN
INSERT, UPDATE DELETE AFTER INSTEAD OF AFTER 1. CREATE VIEW PriceIncludeVAT
AS
SELECT ProductID,CategoryID,ProductName,Unitprice,Realprice=CASE VATFlag /* RealPrice */
WHEN 1 THEN Unitprice * 1.07
WHEN 0 THEN Unitprice
END
FROM TblProducts
2. 3. PricelncludeVAT TblProducts
CREATE TRIGGER INSERTTblProducts ON PricelncludeVAT
INSTEAD OF INSERT
AS
INSERT INTO TblProducts
SELECT ProductID,CategoryID,ProductName,UnitPrice,0,0 FROM INSERTED
4. INSERT 2 PricelncludeVAT ROLLBACK TRAN[SACTION] 32 SQL Server sp_configure EXEX sp_configurenested triggers,1
0 SQL Server SQL Server SQL Server SQL SQL Server (Rollback) INSERT,UPDATE, DELETE SQL Server CREATE DATABASE, TABLE, INDEX, PROCEDURE, DEFAULT, RULE, TRIGGER VIEW
DROP ALTER TABLE,ALTER DATABASE
TRUNCATE TABLE
GRANT, REVOKE
UPDATE STATISTICS
RECONFIGURE
LOAD DATABASE LOAD TRANSACTION
CREATE TABLE SELECT INTO AFTER SET SQL Server TEXT IMAGE CategoryPicture IMAGE SELECT Stored Procedure
Trigger
/, , //
Transact-SQL /ENABLE TRIGGER[trigger_name]ON[object_name]*/*/
DISABLE TRIGGER[trigger_name]ON[object_name]*/*// Management Studio triggers DELETE
Transact-SQL DROP TRIGGER[owner.]trigger_name[,[owner.]trigger_name]
Note
Stored Procedure sp_rename Sp_rename Check_Customers,Check_CustomersNew
SQL Server Stored Procedure sp_help , SQL Server sp_depends Stored Procedure
Rule, Defaults, Stored procedure, syscomments