在teaching数据库中,在course表中创建一个UPDATE触发器(trig_cno),该触发器防止用户修改course表的课程号。
时间: 2024-02-13 22:05:01 浏览: 154
以下是在teaching数据库中,在course表中创建一个防止用户修改课程号的UPDATE触发器(trig_cno)的SQL语句:
```
CREATE TRIGGER trig_cno
BEFORE UPDATE ON course
FOR EACH ROW
BEGIN
IF NEW.cno <> OLD.cno THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot modify cno in course table.';
END IF;
END;
```
这个触发器会在每次尝试更新course表的记录之前触发,并检查更新后的课程号是否与原课程号相同。如果不同,就会抛出一个SQL异常,阻止更新操作。
相关问题
在course表中创建一个UPDATE触发器(trig_cno),该触发器防止用户修改course表的课程号。 GO
好的,以下是触发器(trig_cno)的代码:
```
CREATE TRIGGER trig_cno
ON course
INSTEAD OF UPDATE
AS
BEGIN
IF UPDATE(cno)
BEGIN
RAISERROR('Cannot modify cno column in course table', 16, 1)
ROLLBACK TRANSACTION
END
ELSE
BEGIN
UPDATE course
SET cname = inserted.cname, credit = inserted.credit
FROM inserted
WHERE course.cno = inserted.cno
END
END
GO
```
这个触发器会在用户尝试修改`course`表中的`cno`列时,防止修改操作并抛出错误信息。如果用户尝试修改其他列,触发器会执行更新操作。注意,这里使用了INSTEAD OF UPDATE触发器,因此需要手动执行更新操作。
使用Navicat在gradem1中的course表中创建一个名为trig_course的触发器,当一门课程被删除时,把该课程的编号和姓名添加到delcourse表中。
在Navicat中创建触发器的步骤如下:
1. 连接到gradem1数据库。
2. 在左侧的“对象浏览器”中展开gradem1数据库,找到“表”选项卡。
3. 找到course表并右键单击,选择“设计表”选项。
4. 选择“触发器”选项卡,然后单击“添加”按钮。
5. 在“触发器名称”文本框中输入trig_course。
6. 在“触发时机”下拉列表中选择“BEFORE DELETE”。
7. 在“触发器代码”文本框中输入以下代码:
```
CREATE TRIGGER trig_course BEFORE DELETE ON course
FOR EACH ROW
BEGIN
INSERT INTO delcourse(course_id, course_name)
VALUES (OLD.course_id, OLD.course_name);
END;
```
8. 单击“应用”按钮,然后单击“确定”按钮保存触发器。
这个触发器会在删除course表中的一行记录时自动执行,将被删除的课程的编号和姓名添加到delcourse表中。
阅读全文