用oracle语句,创建还书触发器RETURN_TRIG,当修改BookLend表中的归还时期时,修改图书表中该图书的状态为“在馆”。
时间: 2024-03-03 14:49:49 浏览: 65
好的,以下是创建RETURN_TRIG触发器的Oracle语句:
```
CREATE OR REPLACE TRIGGER RETURN_TRIG
AFTER UPDATE OF return_date ON BookLend
FOR EACH ROW
BEGIN
UPDATE Book
SET status = '在馆'
WHERE book_id = :OLD.book_id;
END;
/
```
这个触发器会在每次修改BookLend表中的归还时期(return_date)时执行,然后将对应的图书的状态更新为“在馆”。注意,这里的book_id需要根据实际情况修改为对应的图书ID字段名。
相关问题
在course表上创建触发器del_trig,当course表上删除一门课程时,级联删除sc表该课程的记录
您可以使用以下SQL语句在MySQL数据库上创建一个名为del_trig的触发器:
```
CREATE TRIGGER del_trig BEFORE DELETE ON course
FOR EACH ROW
BEGIN
DELETE FROM sc WHERE cno = OLD.cno;
END;
```
在这个触发器中,我们定义在删除course表中的一条记录之前执行的操作。在这个例子中,我们使用级联删除,删除sc表中与该课程相关的所有记录。
创建与 grade 表相同的表 sc;在 course 表上创建触发器 del_trig,当 course 表上 删除一门课程时,级联删除 sc 表该课程的记录
创建表 sc 的 SQL 语句如下:
```
CREATE TABLE sc (
sno CHAR(10) NOT NULL,
cno CHAR(10) NOT NULL,
grade INT NOT NULL,
PRIMARY KEY (sno, cno),
FOREIGN KEY (sno) REFERENCES student(sno),
FOREIGN KEY (cno) REFERENCES course(cno)
);
```
创建触发器 del_trig 的 SQL 语句如下:
```
CREATE TRIGGER del_trig
BEFORE DELETE ON course
FOR EACH ROW
BEGIN
DELETE FROM sc WHERE cno = OLD.cno;
END;
```
这个触发器会在 course 表上删除一门课程时触发,然后删除 sc 表中所有 cno 等于该课程 cno 的记录。这样就实现了级联删除。
阅读全文