CREATE TRIGGER trigger_instead退選
ON 選修
INSTEAD OF DELETE
AS
DECLARE @可否刪除 INT=0
DECLARE @有無此學生 INT=0
DECLARE @有無此課程 INT=0
DECLARE @低於學分底線 INT=0
DECLARE @退選底線人數 INT=0
SET @可否刪除 = (SELECT count(*) FROM 選修,deleted
WHERE 選修.學生代號=deleted.學生代號 AND 選修.課程代號=deleted.課程代號)
SET @低於學分底線 = (SELECT SUM(科目學分數) FROM 選修,課程,科目,deleted
WHERE 選修.課程代號=課程.課程代號 AND 課程.科目代號=科目.科目代號 AND 選修.學生代號=deleted.學生代號)
SET @退選底線人數 = (SELECT COUNT(*) FROM 選修,deleted WHERE 選修.課程代號=deleted.課程代號)
SET @有無此學生=(SELECT COUNT(*) FROM 選修,deleted WHERE 選修.學生代號=deleted.學生代號 )
SET @有無此課程=(SELECT COUNT(*) FROM 選修,deleted WHERE 選修.課程代號=deleted.課程代號 )
IF (@有無此學生>1 AND @有無此課程>1)
BEGIN
IF @可否刪除=1
BEGIN
IF (@低於學分底線-4)>5
IF @退選底線人數<3
PRINT '低於退選底線人數 無法退選!'
ELSE
BEGIN
DELETE 選修 WHERE 選修.學生代號=(SELECT 學生代號 FROM deleted)
AND 選修.課程代號=(SELECT 課程代號 FROM deleted)
END
ELSE
PRINT '學分數低於下限 無法退選!'
END
ELSE
PRINT '該學生沒選此課程!'
END
ELSE
PRINT '查無此學生 or 查無此課程'
GO
測試留言回復
回覆刪除123
回覆刪除