さに応じて増加数は、これが私のトリガーです:MySQLのトリガ - 挿入された値
CREATE TRIGGER instant_messages_a BEFORE INSERT ON messages_messages
FOR EACH ROW
BEGIN
IF NEW.received = 1 THEN
INSERT INTO messages_folders (id, addressee, sender, count_total, updated_time, nickname, subject, ipadr, new_messages, photo) VALUES
(NULL,NEW.addressee_id,NEW.sender_id,1,UNIX_TIMESTAMP(NOW()),NEW.nickname,NEW.subject,NEW.ipadr,1,0)
ON DUPLICATE KEY UPDATE count_total=count_total+1,updated_time=UNIX_TIMESTAMP(NOW()),subject=NEW.subject,ipadr=NEW.ipadr,new_messages=new_messages+1,photo=NEW.photo;
ELSE
INSERT INTO messages_folders (id, addressee, sender, count_total, updated_time, nickname, subject, ipadr, new_messages, photo) VALUES
(NULL,NEW.addressee_id,NEW.sender_id,1,UNIX_TIMESTAMP(NOW()),NEW.nickname,NEW.subject,0,0,0)
ON DUPLICATE KEY UPDATE count_total=count_total+1;
END IF;
END
質問N 1
MySQLのクエリはinstant_messages_a
へ$_POST['received']
値を挿入します。この値は常に0または1です。とnew_messages
という値の列をmessages_folders
の表の$_POST['received']
の値に応じて増やしたいとします。このような何か:
count_total=count_total+$_POST['received']
new_messages=new_messages+$_POST['received']
は私がトリガー修正:
... new_messages=new_messages+NEW.received ...
... inbox_count_total=inbox_count_total+NEW.received ...
をしかし、それは動作しません - new_messagesとinbox_count列の値は更新後に同じ状態を保ちます。どうして?
質問N 2
私はmessages_folders
表に$_POST['subject']
値を必要としています。トリガーがmessages_folders
テーブルをこの値で更新する必要があるため、instant_messages_a
テーブルにも挿入します。 instant_messages_a
表に$_POST['subject']
を挿入せずにmessages_folders table
...subject=NEW.subject...
を更新する方法をどのような方法があります。
を使用する必要があり時点で一つの質問してください。定義してください、すべての中で最も重要なのは機能しません。 __format your code__ – e4c5
よろしくお願いいたします。 'new_messages = new_messages + NEW.received' – user1406271
' received = 1のときnew_messages = new_messages + NEW.new_messagesそして何が受信されたとき= 0'のように 'new_messages'列の値は同じままです。 ? – Sami