0
私はこの問題に悩まされています。これが私が今までに作った最初の引き金です(これにはかなり新しいです)。私はそれが書式設定の問題だと思う。私は、フィラーダダウンと呼ばれるテーブルを持っています。新しい行のB3_4_5の値が1であるかどうかをチェックするためにレコードが挿入されるたびに必要です。それが必要ならば、selectを実行してB3_4_5が0だった最後のエントリを見つけてください。 .stoptime値は、最後の0レコードの 'time'値になります。MYSQLトリガー最終行の値と設定を取得
私はそこにすべての部品があると思うが、走らせることはできない。助けてください。
DELIMITER $$
CREATE TRIGGER downinsert
BEFORE INSERT ON 'filleradown' FOR EACH ROW BEGIN
DECLARE downtime DATETIME;
IF (NEW.B3_4_5 = '1') THEN
SELECT time INTO downtime FROM filleradown WHERE B3_4_5 = 0 ORDER BY time DESC LIMIT 1;
SET NEW.stoptime = downtime;
END IF
$$
DELIMITER ;
UPDATE:私はここで少し良くコードを得ましたが、それでもいくつかのエラーを取得。
DELIMITER $$
CREATE TRIGGER downinsert BEFORE INSERT ON filleradown
FOR EACH ROW
BEGIN
DECLARE dt DATETIME;
IF NEW.B3_4_5 = '1' THEN
SELECT MAX(time) INTO dt FROM filleradown WHERE filleradown.B3_4_5 = 0;
SET NEW.stoptime = dt;
END IF
$$
DELIMITER ;
私はエラーに
どのようなエラーが表示されますか?また、あなたの 'select'クエリは準最適です。あなたは 'LIMIT、OFFSET'オーバーヘッドを取り除くので、' SELECT MAX(time)AS down time from filladown WHERE B3_4_5 = 0'のようなものを必要とします。 –
@ N.B。メインポストを更新しました。私は少し修正しています –
もう一度更新されました。デリミタがありません –