Das Problem: SQLite ergibt "near DEFAULT: syntax error", wenn sqlite3_exec ausgeführt wird. Die Einfügung funktioniert gut außerhalb des Triggers und andere Anweisungen funktionieren innerhalb des Triggers, aber irgendwie funktionieren die DEFAULT VALUES nicht innerhalb des Triggers. Warum passiert dies?SQLite-Syntaxfehler beim Einfügen des Standardwerts während des Triggers nach
SQLite Code:
CREATE TABLE Symbol (
Label VARCHAR(127) PRIMARY KEY
);
CREATE TABLE Process (
Name INTEGER PRIMARY KEY
);
CREATE TABLE Named_Process_Definition (
Label VARCHAR(127),
Name INTEGER,
FOREIGN KEY (Label) REFERENCES Symbol (Label),
FOREIGN KEY (Name) REFERENCES Process_Definition (Name)
);
CREATE TRIGGER pre_new_named_process BEFORE INSERT ON Named_Process_Definition
BEGIN
INSERT INTO Symbol (Label) VALUES (NEW.Label);
END;
CREATE TRIGGER post_new_named_process AFTER INSERT ON Named_Process_Definition
BEGIN
INSERT INTO Process DEFAULT VALUES;
UPDATE Named_Process_Definition SET Name=last_insert_rowid() WHERE rowid=NEW.rowid;
END;
Die Trigger gemeint sind, indem sie automatisch Erzeugen von internen "unnamed" Ressourcen wie Prozess zu vereinfachen Named_Process_Definitions Einsetzen.
einige Code verschossen, festhalten und Aktualisierung dieser ... Ist das Rowid gültig nach dem Einsetzen? Das heißt, kann ich den Named_Process_Definition.Name darauf im Trigger setzen? – Andreas
@Andreas Die [Dokumentation] (http://www.sqlite.org/lang_createtrigger.html) sagt Ihnen, wann der value "rowid" gültig ist. –