创建一个名为"tri_booksale"的触发器,要求当销售表中有新的销售记录插入时,该图书在图书信息表中的库存数量自动更新。
时间: 2024-02-13 19:07:43 浏览: 24
好的,您的要求我已经收到了。下面是创建"tri_booksale"触发器的SQL语句:
```
CREATE TRIGGER tri_booksale
AFTER INSERT ON sales
FOR EACH ROW
UPDATE books_info
SET stock = stock - NEW.quantity
WHERE books_info.book_id = NEW.book_id;
```
触发器会在销售表中插入新的销售记录时自动执行,将对应图书在图书信息表中的库存数量更新。更新的逻辑是将图书信息表中对应图书的库存数量减去新销售记录中的数量(NEW.quantity),使用NEW关键字表示新插入的记录。同时,WHERE子句使用book_id来匹配需要更新库存数量的图书。
相关问题
请创建一个名为tri_type的触发器,在插入新的借阅记录时,如果借出日期为空,就把它设置为当前日期。
好的,以下是创建名为tri_type的触发器的 SQL 代码:
CREATE TRIGGER tri_type
BEFORE INSERT ON 借阅记录
FOR EACH ROW
BEGIN
IF NEW.借出日期 IS NULL THEN
SET NEW.借出日期 = CURDATE();
END IF;
END;
这个触发器会在每次插入新的借阅记录时触发,如果借出日期为空,就会把它设置为当前日期。
创建触发器 tri _ delete _ stu ,当在 Stu 表中删除一个学生时, sc 表中该生的选课记录也一并被删除。
可以使用以下代码创建触发器 tri_delete_stu:
```
CREATE TRIGGER tri_delete_stu
AFTER DELETE ON Stu
FOR EACH ROW
BEGIN
DELETE FROM sc WHERE sc.sno = OLD.sno;
END;
```
这个触发器会在 Stu 表中删除一条记录时被触发,然后删除 sc 表中所有与被删除学生相关的选课记录。其中,OLD.sno 表示被删除的学生的学号。