尽管PRAGMA

时间:2015-11-15 17:39:10

标签: python sqlite

这是我的代码。它是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条目。我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果在以BEGIN语句开头的事务中执行,

PRAGMA foreign_keys将无声地失败。

  

此pragma是交易中的无操作;只有在没有挂起的BEGIN或SAVEPOINT时才能启用或禁用外键约束实施。