¡¶SQL SERVER Êý¾Ý¿âÓ¦Óá·ÊµÑéÖ¸µ¼Êé-2015°æ ÏÂÔØ±¾ÎÄ

·ÖÎöһϴ˶γÌÐòÖ´ÐÐʱ¿ÉÄܳöÏÖÄļ¸ÖÖÇé¿ö¡£ ¡¾Ë¼¿¼ÓëÁ·Ï°¡¿

±àдÈçÏÂT-SQL³ÌÐò£º

(1) ×Ô¶¨Òå1¸öÊý¾ÝÀàÐÍ£¬ÓÃÓÚÃèÊöYGGLÊý¾Ý¿âÖеÄDepartmentlD×ֶΣ¬È»ºó±àд´úÂë

ÖØÐ¶¨ÒåÊý¾Ý¿â¸÷±í¡£

(2) ±àд¶ÔYGGL¸÷±í½øÐвåÈë¡¢Ð޸ġ¢É¾³ý²Ù×÷µÄ´æ´¢¹ý³Ì£¬È»ºó£¬±àдl¶Î³ÌÐòµ÷ÓÃ

ÕâЩ´æ´¢¹ý³Ì¡£

(3)¶ÔÓÚYGGLÊý¾Ý¿â£¬±íEmployeesµÄEmployeelDÁÐÓë±íSalaryµÄEmployeelDÁÐÓ¦Âú×ã²ÎÕÕÍêÕûÐÔ¹æÔò£¬ÇëÓô¥·¢Æ÷ʵÏÖÁ½¸ö±íÎʵIJÎÕÕÍêÕûÐÔ¡£ 4.´´½¨´¥·¢Æ÷

¶ÔÓÚYGGLÊý¾Ý¿â£¬±íEmployeesµÄDepartmentIDÁÐÓë±íDepartmentsµÄDepartmentIDÁжÔÓ¦Âú×ã²ÎÕÕÍêÕûÐÔ¹æÔò£¬¼´£º

£¨1£© ÏòEmployees±íÌí¼Ó1Ìõ¼Ç¼ʱ£¬¸Ã¼Ç¼µÄDepartmentIDÖµÔÚDepartments

±íÖÐÓ¦´æÔÚ¡£

£¨2£© ÐÞ¸ÄDepartments±íDepartmentID ×Ö¶Îֵʱ£¬¸Ã×Ö¶ÎÔÚEmployees±íÖеĶÔ

Ó¦ÖµÒ²Ó¦Ð޸ġ£

£¨3£© ɾ³ýDepartments±íÖÐ1Ìõ¼Ç¼ʱ£¬¸Ã¼Ç¼DepartmentID×Ö¶ÎÖµÔÚEmployees

±íÖжÔÓ¦µÄ¼Ç¼ҲӦɾ³ý¡£

¶ÔÓÚÉÏÊö²ÎÕÕÍêÕûÐÔ¹æÔò£¬ÔÚ´Ëͨ¹ý´¥·¢Æ÷ʵÏÖ¡£ ÔÚ²éѯ·ÖÎöÆ÷±à¼­´°¿ÚÊäÈë¸÷´¥·¢Æ÷µÄ´úÂë²¢Ö´ÐУº ¢ÙÏòEmployees±í²åÈë»òÐÞ¸Ä1Ìõ¼Ç¼ʱ£¬Í¨¹ý´¥·¢Æ÷¼ì²é¼Ç¼µÄDepartmentIDÖµÔÚDepartments±íÊÇ·ñ´æÔÚ£¬Èô²»´æÔÚ£¬ÔòÈ¡Ïû²åÈë»òÐ޸IJÙ×÷¡£ USE YGGL GO

CREATE TRIGGER EmployeesIns on dbo.Employees FOR INSRET AS BEGIN

IF((SELECT ins.departmentid from inserted ins)NOT IN (SELECT departmentid FROM departments)) ROLLBACK

£¯*¶Ôµ±Ç°ÊÂÎñ»Ø¹ö£¬¼´»Ö¸´µ½²åÈëǰµÄ״̬ END

¢ÚÐÞ¸ÄDepartments±ídepartmentID×Ö¶Îֵʱ£¬¸Ã×Ö¶ÎÔÚEmployees±íÖеĶÔÓ¦ÖµÒ²½øÐÐÏàÓ¦Ð޸ġ£ USE YGGL GO

CREATE TRIGGER DepartmentsUpdate on dbo£®Departments FoR UPDATE AS BEGIN

IF(COLUMNS_UPDATED()&01)>0 UPDATE Employees

17

SET DepartmentlD=(SELECT ins.DepartmentlD from INSERTED ins) WHERE DepaxtmentlD=(SELECT DepartmentlD FROM deleted) END GO

¢Ûɾ³ýDepartments±íÖÐ1Ìõ¼Ç¼µÄͬʱɾ³ý¸Ã¼Ç¼departmentlD×Ö¶ÎÖµÔÚEmployees±íÖжÔÓ¦µÄ¼Ç¼¡£ USE YGGL GO

CREATE TRIGGER DepartmentsDelete On db.Departments FOR DELETE AS BEGIN

DELETE FROM Employees

WHERE DepartmentlD=(SELECT DepartmentlD FROM deleted) END

GO

¡¾Ë¼¿¼ÓëÁ·Ï°¡¿

ÉÏÊö´¥·¢Æ÷µÄ¹¦ÄÜÓÃÍêÕûÐԵķ½·¨Íê³É¡£ ¡¾Ë¼¿¼ÓëÁ·Ï°¡¿

±àдÈçÏÂT-SQL³ÌÐò£º

£¨1£© ×Ô¶¨Òå1¸öÊý¾ÝÀàÐÍ£¬ÓÃÓÚÃèÊöYGGLÊý¾Ý¿âÖеÄDepartmentlD×ֶΣ¬È»ºó±àд

´úÂëÖØÐ¶¨ÒåÊý¾Ý¿â¸÷±í¡£

£¨2£© ¶ÔÓÚYGGLÊý¾Ý¿â£¬±íEmployeesµÄEmployeelDÁÐÓë±íSalaryµÄEmployeelDÁÐ

Ó¦Âú×ã²ÎÕÕÍêÕûÐÔ¹æÔò£¬ÇëÓô¥·¢Æ÷ʵÏÖÁ½¸ö±í¼äµÄ²ÎÕÕÍêÕûÐÔ¡£

18