写一个python代码,在表course中建立删除触发器,实现表course和表SC的级联删除,也就是只要删除表course 中课程号为c1的元组,则表sc中cno为c1的元组也要删除,建立完触发器后测试触发器。
时间: 2024-02-09 10:10:14 浏览: 73
SQL server创建触发器实现级联删除
以下是建立触发器的Python代码:
```python
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='password', database='test')
# 创建游标
cur = conn.cursor()
# 建立触发器
trigger_sql = """
CREATE TRIGGER del_course_trigger
AFTER DELETE ON course
FOR EACH ROW
BEGIN
DELETE FROM SC WHERE cno = old.cno;
END;
"""
cur.execute(trigger_sql)
# 关闭游标和连接
cur.close()
conn.close()
```
以上代码会在MySQL数据库中创建一个名为`del_course_trigger`的触发器,实现了表course和表SC的级联删除。
测试触发器的方法是删除表course中课程号为c1的元组,并查询表SC中是否也已经删除了c1的相关记录:
```python
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='password', database='test')
# 创建游标
cur = conn.cursor()
# 删除表course中课程号为c1的元组
del_sql = "DELETE FROM course WHERE cno = 'c1'"
cur.execute(del_sql)
# 查询表SC中是否已经删除了c1的相关记录
query_sql = "SELECT * FROM SC WHERE cno = 'c1'"
cur.execute(query_sql)
result = cur.fetchone()
if result is None:
print("触发器测试成功,表SC中已删除c1的相关记录!")
else:
print("触发器测试失败,表SC中仍存在c1的相关记录!")
# 关闭游标和连接
cur.close()
conn.close()
```
以上代码会输出触发器测试结果,如果表SC中已经删除了c1的相关记录,则触发器测试成功。
阅读全文