0

使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください'SELECT count(*) FROM capacity WHERE server=NEW.server AND feed'

私のコード:

DROP TRIGGER IF EXISTS newsmonitoringrawdata.TNTInsertionTrigger;

CREATE TRIGGER TgtInsertionTrigger BEFORE INSERT ON tnews
  FOR EACH ROW BEGIN
SET @isRecordCreated = 
 SELECT count(*) FROM capacity
 WHERE
 server=NEW.server
 AND
 feed=NEW.Feed 
 AND 
 date_Format(streamdt,'%Y-%m-%d %H:%i')=date_Format(NEW.StreamDT,'%Y-%m-%d %H:%i');

 IF @isRecordCreated>0 THEN 
    UPDATE capacity 
    SET MsgNumber=MsgNumber+1, 
    size=size+NEW.MSize
    WHERE 
    server=NEW.server
    AND
     feed=NEW.feed
    and
     date_Format(streamdt,'%Y-%m-%d %H:%i')=date_Format(NEW.StreamDT,'%Y-%m-%d %H:%i');
 ELSE 
    INSERT INTO capacity(server, feed, streamdt, msgNumber, size) 
    VALUES
    (
        NEW.server,
        NEW.feed,
        date_Format(NEW.StreamDT,'%Y-%m-%d %H:%i:00'),
        1,
        NEW.size
    );  
 END IF; 

END
4

1 に答える 1

0
SET @isRecordCreated = (
SELECT count(*) FROM capacity
WHERE
server=NEW.server
AND
feed=NEW.Feed 
AND 
date_Format(streamdt,'%Y-%m-%d %H:%i')=date_Format(NEW.StreamDT,'%Y-%m-%d %H:%i')
);

()クエリの前後に括弧を追加する必要があります。

于 2012-09-10T08:47:57.043 に答える