私はsqlite用のトリガを作成しようとしているだけで、あらゆる種類の問題に取り掛かります。実際には、私の本当の問題は、SQL言語の私の貧弱な背景にあると私は思う。とにかくここに行く...SQLiteで条件付きSQLトリガを作成する
私はテーブル1とテーブル2の2つのテーブルを持っています。 Table1にはtimeという名前の列があります(これは64ビットの整数時間です)。私はTable1に挿入されている新しい行を監視するトリガーが必要です。 Table1にXより大きい時間を持つ3つ以上の行がある場合(以下の例では120秒のハードコード値)、Table2に新しい行を挿入する必要があります。ここで
はそこにあらゆる種類の魂が
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
(これは動作しません注意してください)私がこれまで持っているもの、私よりもSQLで優れている誰ですか?
リンクは機能しません。はい、sqliteのウェブサイトのSQLリファレンスの多くは使用しています。私はちょうどそれを取得していないよ。 –
はい、StackOverflowには自分のリンクに問題があります。http://sqlite.org/lang_createtrigger.html; %5fを '_'に変更してください。 – dlamblin
@チーフス - トリガーWHEN節は、数値を返す代わりに、真または偽を返す比較式を期待していると思います。したがって、2番目のフォーマットが有効です。 exprのSQLite構文図からは、この場合true/falseを返す必要があることは明らかではないので、それはあなたにとって紛らわしいことです。 SQLiteは十分に文書化されていますが、まだギャップがあります。私はSQLiteチームに電子メールを送り、これに言及したいと思います。 –