6.定义一个触发器, 在EDUC数据库中建立一个 名为tr_insertstudent的INSERT触发器,存储在 tb_Sc表中。 --该触发器的作用是:当用户向sc表中插入记录 时,如果插入了在tb_course表中没有的课程编号 cno,则提示用户不能插入记录,否则提示记录 插入成功
时间: 2023-06-18 19:07:40 浏览: 150
在EDUC数据库中建立一个名为tr_insertstudent的INSERT触发器,存储在tb_Sc表中的SQL语句如下:
```
CREATE TRIGGER tr_insertstudent
ON tb_Sc
AFTER INSERT
AS
BEGIN
DECLARE @cno INT
SELECT @cno = cno FROM inserted
IF NOT EXISTS(SELECT 1 FROM tb_course WHERE cno = @cno)
BEGIN
RAISERROR('不能插入记录,该课程编号不存在', 16, 1)
ROLLBACK
END
ELSE
BEGIN
PRINT '记录插入成功'
END
END
```
该触发器的作用是:当用户向tb_Sc表中插入记录时,如果插入了在tb_course表中没有的课程编号cno,则提示用户不能插入记录,否则提示记录插入成功。
相关问题
9.为EDUC数据库中的tb_student表创建一个名为 tr_deletestudent的DELETE触发器 --该触发器的作用是禁止修改及删除tb_student 表中的记录。
在创建该触发器之前,需要先创建一个用于存储被删除的记录的备用表,以便于日后恢复数据。可以使用以下SQL语句:
```
CREATE TABLE tb_student_backup (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
gender VARCHAR(10),
major VARCHAR(50)
);
```
接下来,可以创建一个名为 tr_deletestudent 的DELETE触发器,代码如下:
```
CREATE TRIGGER tr_deletestudent
BEFORE DELETE ON tb_student
FOR EACH ROW
BEGIN
INSERT INTO tb_student_backup (id, name, age, gender, major)
VALUES (OLD.id, OLD.name, OLD.age, OLD.gender, OLD.major);
SELECT RAISE(ABORT, 'Deleting records from student table is not allowed');
END;
```
该触发器在删除tb_student表中的记录之前,将被删除的记录插入到备用表tb_student_backup中,并且会阻止删除操作的执行。如果有人尝试删除tb_student表中的记录,将会触发异常,提示不允许删除操作。
为EDUC数据库中的tb_student表创 建一个名为trdeletestudent的DELETE触发器,一该触发器的作用是禁止修改及删除tb_ student 表中的记录。
在创建trdeletestudent触发器前,需要先创建tb_student表:
```
CREATE TABLE tb_student (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
gender VARCHAR(10)
);
```
接着,可以使用以下语句创建trdeletestudent触发器:
```
CREATE TRIGGER trdeletestudent
ON tb_student
INSTEAD OF DELETE
AS
BEGIN
RAISERROR('Deleting from tb_student table is not allowed.', 16, 1);
END;
```
该触发器的作用是在删除tb_student表中的记录时,抛出一个错误信息,禁止删除操作。如果尝试删除tb_student表中的记录,将会得到以下错误信息:
```
Msg 50000, Level 16, State 1, Procedure trdeletestudent, Line 4
Deleting from tb_student table is not allowed.
```
阅读全文