3) 使用T-SQL语句创建触发器,当向borrowinfo借阅信息表中插入数据时,更新BorrowNum表中的数值,BorrowNum 中数据值与borrowinfo表中每个读者借阅书籍的数量对应(sqlserver中)
时间: 2024-05-15 13:14:06 浏览: 19
可以使用以下T-SQL语句创建触发器:
```
CREATE TRIGGER UpdateBorrowNum
ON borrowinfo
AFTER INSERT
AS
BEGIN
UPDATE BorrowNum
SET num = num + inserted.num
FROM BorrowNum INNER JOIN (SELECT readerid, COUNT(*) as num FROM inserted GROUP BY readerid) inserted
ON BorrowNum.readerid = inserted.readerid
END
```
该触发器在向borrowinfo表中插入数据之后触发,通过INNER JOIN与插入的数据表进行关联,并通过COUNT(*)函数计算每个读者借阅书籍的数量,然后更新BorrowNum表中对应读者的num值。
相关问题
针对图书管理系统 book 数据库: 使用 SSMS 和 TSQL 语句创建 DML 触发器, (1) 对图书管理系统 book 数据库,当插入一条书籍记录时,打印出 一条语句表示已经成功插入一条数据“您又添加了一本书” (2) 对表 books 再创建一个 after insert 触发器,当插入一条书籍记 录时,打印出一条语句表示已经成功插入一条数据“您再次添加 了一本书” (3) 使用 T-SQL 语句创建触发器,当向 borrowinfo 借阅信息表中插入 数据时,更新 BorrowNum 表中的数值,让 BorrowNum 中数据值与 borrowinfo 表中每个读者借阅书籍的数量对应 2. 实验对同一个表,两个 DML 触发器以不同顺序触发效果 3. 使用 SSMS 查看和修改 DML 触发器 4. 使用存储过程(两种语句)查看 DML 触发器 5. 使用 SSMS 和 TSQL 语句禁用、启用、删除 DML 触发器 6. 使 用 TSQL 语 句 创 建 针 对 CREATE_DATABASE , ALTER_DATABASE,DROP_DATABASE 的 DDL 触发器
1. 创建触发器:
```
--1.
CREATE TRIGGER tr_insert_book ON books
AFTER INSERT
AS
BEGIN
PRINT '您又添加了一本书'
END
--2.
CREATE TRIGGER tr_insert_book2 ON books
AFTER INSERT
AS
BEGIN
PRINT '您再次添加了一本书'
END
--3.
CREATE TRIGGER tr_update_borrow_num ON borrowinfo
AFTER INSERT
AS
BEGIN
UPDATE BorrowNum
SET num = (SELECT COUNT(*) FROM borrowinfo WHERE reader_id = inserted.reader_id)
WHERE reader_id = inserted.reader_id
END
```
2. 触发器顺序:
```
CREATE TRIGGER tr_insert_book ON books
AFTER INSERT
AS
BEGIN
PRINT '触发器1'
ROLLBACK
END
CREATE TRIGGER tr_insert_book2 ON books
AFTER INSERT
AS
BEGIN
PRINT '触发器2'
END
INSERT INTO books (book_id, book_name, author, publish_date, price) VALUES (1, 'book1', 'author1', '2021-10-01', 10)
```
结果为:触发器2,触发器1
3. 查看和修改触发器:
在 SSMS 中,可以在数据库的“触发器”文件夹下找到已创建的触发器,右键点击触发器选择“脚本触发器”可以查看和修改触发器。
4. 使用存储过程查看触发器:
```
--1. 查看所有触发器
EXEC sp_helptrigger 'books'
--2. 查看指定触发器
SELECT OBJECT_NAME(parent_object_id) AS table_name, name AS trigger_name, OBJECT_DEFINITION(OBJECT_ID) AS definition
FROM sys.triggers
WHERE parent_class_desc = 'OBJECT_OR_COLUMN' AND OBJECT_NAME(parent_object_id) = 'books' AND name = 'tr_insert_book'
```
5. 启用、禁用和删除触发器:
```
--禁用触发器
DISABLE TRIGGER tr_insert_book ON books
--启用触发器
ENABLE TRIGGER tr_insert_book ON books
--删除触发器
DROP TRIGGER tr_insert_book ON books
```
6. 创建 DDL 触发器:
```
--创建数据库后触发器
CREATE TRIGGER tr_create_db ON ALL SERVER
FOR CREATE_DATABASE
AS
BEGIN
PRINT '数据库已创建'
END
--修改数据库后触发器
CREATE TRIGGER tr_alter_db ON ALL SERVER
FOR ALTER_DATABASE
AS
BEGIN
PRINT '数据库已修改'
END
--删除数据库后触发器
CREATE TRIGGER tr_drop_db ON ALL SERVER
FOR DROP_DATABASE
AS
BEGIN
PRINT '数据库已删除'
END
```
在sqlite中实现图书馆管理信息系统
在SQLite中实现图书馆管理信息系统需要设计数据库结构、编写SQL语句和建立相应的应用程序。以下是一个简单的图书馆管理信息系统的数据库结构:
1. 图书表(Book)
- 书籍ID(BookID)
- 书名(BookName)
- 作者(Author)
- ISBN号(ISBN)
- 出版社(Publisher)
- 出版日期(PublishDate)
- 价格(Price)
- 剩余数量(RemainNum)
2. 借书记录表(BorrowRecord)
- 记录ID(RecordID)
- 学生ID(StudentID)
- 书籍ID(BookID)
- 借书日期(BorrowDate)
- 还书日期(ReturnDate)
3. 学生表(Student)
- 学生ID(StudentID)
- 姓名(StudentName)
- 班级(Class)
- 借书数量(BorrowNum)
通过上述表格,可以在SQLite中建立相应的表格,以实现图书馆管理信息系统。例如,以下是创建图书表的SQL语句:
```
CREATE TABLE Book (
BookID INTEGER PRIMARY KEY,
BookName TEXT NOT NULL,
Author TEXT NOT NULL,
ISBN TEXT NOT NULL,
Publisher TEXT NOT NULL,
PublishDate DATE,
Price REAL,
RemainNum INTEGER
);
```
创建借书记录表的SQL语句:
```
CREATE TABLE BorrowRecord (
RecordID INTEGER PRIMARY KEY,
StudentID INTEGER NOT NULL,
BookID INTEGER NOT NULL,
BorrowDate DATE,
ReturnDate DATE,
FOREIGN KEY(StudentID) REFERENCES Student(StudentID),
FOREIGN KEY(BookID) REFERENCES Book(BookID)
);
```
创建学生表的SQL语句:
```
CREATE TABLE Student (
StudentID INTEGER PRIMARY KEY,
StudentName TEXT NOT NULL,
Class TEXT NOT NULL,
BorrowNum INTEGER
);
```
随后,可以编写相应的应用程序,例如通过Python来实现与SQLite数据库的交互,并实现图书的借阅、归还等操作。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)