修改数据库Librarymanage中的Bookinfo表的触发器“tri_Bookdeleted”。当执行DELETE操作时,触发器会显示“被删除图书总本数”、“被删除图书价格”及“被删除图书的平均价格”。
时间: 2023-09-12 21:06:29 浏览: 35
好的,您需要修改Librarymanage数据库中的Bookinfo表的触发器“tri_Bookdeleted”,使得当执行DELETE操作时,触发器会显示“被删除图书总本数”、“被删除图书价格”及“被删除图书的平均价格”。以下是修改触发器的SQL语句:
```
CREATE OR ALTER TRIGGER tri_Bookdeleted
ON Bookinfo
AFTER DELETE
AS
BEGIN
DECLARE @Total INT, @Price FLOAT, @AvgPrice FLOAT
SELECT @Total = SUM(Num), @Price = SUM(Price) FROM DELETED
SET @AvgPrice = @Price / @Total
PRINT '被删除图书总本数: ' + CAST(@Total AS VARCHAR(10))
PRINT '被删除图书价格: ' + CAST(@Price AS VARCHAR(10))
PRINT '被删除图书的平均价格: ' + CAST(@AvgPrice AS VARCHAR(10))
END
```
这个触发器会在DELETE操作执行后自动触发,计算出被删除图书的总本数、总价格和平均价格,并在控制台上打印出来。请注意,这个触发器只会在Bookinfo表上执行DELETE操作时触发。
相关问题
为数据库Librarymanage中的Bookinfo表创建触发器“tri_Bookdeleted”。执行DELETE操作时,触发器会显示“被删除图书总本数”和“被删除图书价格”
以下是创建触发器 tri_Bookdeleted 的 SQL 语句:
```sql
CREATE TRIGGER tri_Bookdeleted
AFTER DELETE ON Bookinfo
FOR EACH ROW
BEGIN
DECLARE deleted_count INT;
DECLARE deleted_price FLOAT;
SELECT SUM(amount) INTO deleted_count FROM Bookinfo WHERE BookID = OLD.BookID;
SELECT SUM(price) INTO deleted_price FROM Bookinfo WHERE BookID = OLD.BookID;
IF deleted_count IS NULL THEN
SET deleted_count = 0;
END IF;
IF deleted_price IS NULL THEN
SET deleted_price = 0;
END IF;
SELECT CONCAT('被删除图书总本数:', deleted_count, ',被删除图书价格:', deleted_price) AS 'Delete Info';
END
```
这个触发器会在执行 DELETE 操作后自动触发,计算被删除图书的总本数和价格,并将结果显示出来。触发器使用了两个 SELECT 语句来计算总本数和总价格,然后使用 IF 语句检查结果是否为 NULL,并在必要时将其设置为 0。最后,触发器使用 CONCAT 函数将结果连接成一个字符串,并将其显示出来。
为数据库Librarymanage中的Bookinfo表创建触发器“tri_Bookdeleted”。执行DELETE操作时,触发器会显示“被删除图书总本数”和“被删除图书价格”。 为数据库Librarymanage中的readerinfo表,执行UPDATE操作的触发器,触发器名称为tri_readerupdate,当更新一名读者电话信息时,显示读者姓名、原电话号码和新电话号码。
以下是创建的两个触发器代码:
1. 为 Bookinfo 表创建的 tri_Bookdeleted 触发器:
```sql
CREATE TRIGGER tri_Bookdeleted
ON Bookinfo
FOR DELETE
AS
BEGIN
DECLARE @BookCount INT, @BookPrice FLOAT
SELECT @BookCount = COUNT(*), @BookPrice = SUM(BookPrice)
FROM deleted
IF @BookCount > 0
BEGIN
PRINT '被删除图书总本数:' + CAST(@BookCount AS VARCHAR(10))
PRINT '被删除图书价格总计:' + CAST(@BookPrice AS VARCHAR(10))
END
END
```
当执行 DELETE 操作删除 Bookinfo 表中的数据时,触发器 tri_Bookdeleted 将会被激活,计算被删除图书的总本数和总价格,并在执行结果中打印输出。
2. 为 readerinfo 表创建的 tri_readerupdate 触发器:
```sql
CREATE TRIGGER tri_readerupdate
ON readerinfo
FOR UPDATE
AS
BEGIN
DECLARE @Name NVARCHAR(50), @OldPhone NVARCHAR(20), @NewPhone NVARCHAR(20)
SELECT @Name = i.Name, @OldPhone = d.Phone, @NewPhone = i.Phone
FROM inserted i
INNER JOIN deleted d ON i.ReaderID = d.ReaderID
IF @OldPhone <> @NewPhone
BEGIN
PRINT '读者姓名:' + @Name
PRINT '原电话号码:' + @OldPhone
PRINT '新电话号码:' + @NewPhone
END
END
```
当执行 UPDATE 操作更新 readerinfo 表中的数据时,触发器 tri_readerupdate 将会被激活,获取读者姓名、原电话号码和新电话号码,并在执行结果中打印输出。