我的SQL触发器创建语句出了什么问题?

时间:2017-05-12 12:39:27

标签: python sqlite

我正在尝试在Python(3.5)下的SQLite3中创建一些SQL触发器。

我的测试用例如下:

#! /usr/bin/env python
import sqlite3

sql_init = """
    CREATE TABLE ajxp_changes ( seq INTEGER PRIMARY KEY AUTOINCREMENT, node_id NUMERIC, type TEXT, source TEXT, target TEXT, deleted_md5 TEXT );
    CREATE TABLE ajxp_index ( node_id INTEGER PRIMARY KEY AUTOINCREMENT, node_path TEXT, bytesize NUMERIC, md5 TEXT, mtime NUMERIC, stat_result BLOB);

    CREATE TRIGGER LOG_DELETE AFTER DELETE ON ajxp_index BEGIN INSERT INTO ajxp_changes (node_id,source,target,type,deleted_md5) VALUES (old.node_id, old.node_path, "NULL", "delete", old.md5); END
    CREATE TRIGGER LOG_INSERT AFTER INSERT ON ajxp_index BEGIN INSERT INTO ajxp_changes (node_id,source,target,type) VALUES (new.node_id, "NULL", new.node_path, "create"); END
    """

conn = sqlite3.connect(":memory:")
conn.executescript(sql_init)

这会产生以下错误:sqlite3.OperationalError: near "CREATE": syntax error

删除第二个CREATE TRIGGER语句时,错误消失。

是什么给出的?我无法弄清楚我的陈述有什么问题......

1 个答案:

答案 0 :(得分:0)

在每个END关键字后添加分号可解决此问题。