Ich versuche, einen Trigger für SQLite zu schreiben und nur in alle Arten von Problemen zu laufen. In Wahrheit denke ich, dass mein Problem mit meinem schlechten Hintergrund in der SQL-Sprache ist. Anyway here goes ...Erstellen eines bedingten SQL-Triggers in SQLite
Ich habe zwei Tabellen Table1 und Table2. Tabelle1 hat eine Spalte namens time (die eine 64-Bit-Integer-Zeit ist). Ich brauche einen Trigger, der darauf achtet, dass eine neue Zeile in Table1 eingefügt wird. Wenn in Tabelle 1 3 oder mehr Zeilen vorhanden sind, deren Zeit größer als X ist (ein fest codierter Wert im folgenden Beispiel 120 Sekunden), muss eine neue Zeile in Tabelle 2 eingefügt werden.
Hier ist, was ich bisher (Anmerkung dies nicht funktioniert)
CREATE TRIGGER testtrigger AFTER
INSERT ON Table1 WHEN
(
SELECT COUNT() AS tCount FROM
(
SELECT * FROM Table1 WHERE
time > (NEW.time - 120)
) WHERE tCount > 3
)
BEGIN
INSERT INTO Table2 (time, data) VALUES
(NEW.time, 'data1');
END
Jede Art Seelen gibt, die in SQL besser sind als ich?
Link funktioniert nicht und ja ich habe viel von der SQL-Sprache Referenz auf SQLite-Website gewesen. Ich bekomme einfach nicht "es". –
Yeah StackOverflow hat ein Problem mit meinem Link, sollte es sein: http://sqlite.org/lang_createtrigger.html; ändere die% 5f in ein '_' – dlamblin
@Typhoid - Ich denke, die Trigger-WHEN-Klausel erwartet einen Vergleichsausdruck, der wahr oder falsch zurückgibt, anstatt eine Zahl zurückzugeben. Also das zweite Format sollte funktionieren. Aus dem SQLite-Syntaxdiagramm für expr geht nicht hervor, dass Sie etwas haben müssen, das in diesem Fall true/false zurückgibt. Daher ist es sinnvoll, dass es für Sie verwirrend ist. SQLite ist gut dokumentiert, hat aber immer noch Lücken. Ich maile dem SQLite-Team und erwähne dies. –