这是我的代码。它是Python 3中的SQLITE3。发布在数据库管理员和这里,不确定这是Python错误还是SQLITE错误。
conn = sqlite3.connect(db)
c = conn.cursor()
c.execute('BEGIN')
c.execute("PRAGMA foreign_keys = ON")
c.execute('CREATE TABLE Product(maker int, model int primary key, type varchar(255))')
c.execute('CREATE TABLE PC(model int references Product(model) on delete cascade, speed int, ram int, hd int, price int check (price>=0))')
然后我做
c.execute('DELETE FROM Product WHERE model=?', (args[0],))
但只删除Product
条目,而不删除PC
条目。我做错了什么?
答案 0 :(得分:1)
BEGIN
语句开头的事务中执行, PRAGMA foreign_keys
将无声地失败。
此pragma是交易中的无操作;只有在没有挂起的BEGIN或SAVEPOINT时才能启用或禁用外键约束实施。