实验十三

This commit is contained in:
2024-11-19 22:49:45 +08:00
parent 773a387d5f
commit ea0131ce37
3 changed files with 115 additions and 1 deletions
+2
View File
@@ -34,6 +34,8 @@
- [实验十二](实验十二.sql) - [实验十二](实验十二.sql)
- [实验十三](实验十三.sql)
### 课后作业📖 ### 课后作业📖
[课后作业](课后作业/) [课后作业](课后作业/)
+112
View File
@@ -0,0 +1,112 @@
USE ;
-- (1)为选课表分别建立插入和更新触发器,如果当前学生累计不及格门数达到5则给出警示信息。
-- 插入触发器
CREATE TRIGGER
ON
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE # (
VARCHAR(8),
INT
);
INSERT INTO #(, )
SELECT
i.,
COUNT(*) AS
FROM
AS q
INNER JOIN INSERTED AS i ON q. = i.
WHERE
q. < 60
GROUP BY
i.
HAVING
COUNT(*) >= 5;
IF EXISTS (SELECT 1 FROM #)
BEGIN
DECLARE @ NVARCHAR(MAX);
SELECT @ = STRING_AGG(
CONCAT('警示: 学号 ', , ' 的累计不及格门数已达到 ', , ' 门!'),
CHAR(13) + CHAR(10)
)
FROM #;
RAISERROR (@, 16, 1);
ROLLBACK TRANSACTION;
END
DROP TABLE #;
END;
-- 更新触发器
CREATE TRIGGER
ON
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE # (
VARCHAR(8),
INT
);
INSERT INTO #(, )
SELECT
i.,
COUNT(*) AS
FROM
AS q
INNER JOIN INSERTED AS i ON q. = i.
WHERE
q. < 60
GROUP BY
i.
HAVING
COUNT(*) >= 5;
IF EXISTS (SELECT 1 FROM #)
BEGIN
DECLARE @ NVARCHAR(MAX);
SELECT @ = STRING_AGG(
CONCAT('警示: 学号 ', , ' 的累计不及格门数已达到 ', , ' 门!'),
CHAR(13) + CHAR(10)
)
FROM #;
RAISERROR (@, 16, 1);
ROLLBACK TRANSACTION;
END
DROP TABLE #;
END;
-- (2)为课程表分别建立插入和更新触发器来建立约束规则:“专业基础”课的教师必须为“教授”或“副教授”,如果不满足约束则拒绝操作,并给出错误信息。
-- 插入触发器
CREATE TRIGGER _插入 ON
AFTER INSERT
AS
BEGIN
IF EXISTS (
SELECT *
FROM INSERTED
JOIN ON INSERTED.=.
WHERE (. != '教授' AND . != '副教授')AND INSERTED.='专业基础'
)
BEGIN
RAISERROR ('教授专业基础课的教师必须为教授或副教授',16,1);
ROLLBACK TRANSACTION;
END;
END;
-- 更新触发器
CREATE TRIGGER _更新 ON
AFTER UPDATE
AS
BEGIN
IF EXISTS (
SELECT *
FROM INSERTED
JOIN ON INSERTED.=.
WHERE (. != '教授' AND . != '副教授')AND INSERTED.='专业基础'
)
BEGIN
RAISERROR ('教授专业基础课的教师必须为教授或副教授',16,1);
ROLLBACK TRANSACTION;
END;
END;