2015-03-14 2 views
2

Я скрипт SQLite, который инициализирует DB (SQLite 3.8.2), создаются следующим образом:Неполной ошибка SQL в базе данных SQLite

sqlite3 -init database_creation.sql sample.db 

Файл сценария, как:

// Some `CREATE TABLE` statements 

CREATE TRIGGER update_totalprice AFTER UPDATE 
    OF price, amount, boxes ON product 
    BEGIN UPDATE product SET totalprice = price * boxes * amount 
    WHERE idproduct = NEW.idproduct; END 

// Some `INSERT` statements. 

Но он генерирует следующее сообщение об ошибке:

Error: incomplete SQL: CREATE TRIGGER update_totalprice AFTER UPDATE 
    OF price, amount, boxes ON product 
    BEGIN UPDATE product SET totalprice = price * boxes * amount 
    WHERE idproduct = NEW.idproduct; END 

// The rest of the file to the end. 

Я уверен, что вы синтаксических ошибок, ни не создавать таблицы, ни вставки тестовых строк, becau se, если я комментирую оператор CREATE TRIGGER, все работает отлично, и я тоже не вижу синтаксической ошибки.

ответ

1

Хорошо, проблема была довольно простой. Я хотя «END» ключевое слово было достаточно, чтобы отметить конец CREATE TRIGGER заявления (даже более зная, что UPDATE утверждение имеет уже свою собственную «;»), но после того, как END, другой ; требуется:

CREATE TRIGGER update_totalprice 
AFTER UPDATE OF price, amount, boxes ON product 
BEGIN 
    UPDATE product SET totalprice = price * boxes * amount 
    WHERE idproduct = NEW.idproduct; 
END; 
Смежные вопросы