的这是我的触发器: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查询插入$_POST['received']
价值为instant_messages_a
。此值始终为0或1.我想根据$_POST['received']
值增加messages_folders
表中的count_total
和new_messages
列的值。事情是这样的:
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
表中。有什么办法如何更新messages_folders table
...subject=NEW.subject...
没有instant_messages_a
表中插入$_POST['subject']
。
请它一次一个问题。请定义不起作用,最重要的是。请__格式化您的代码____0_ – e4c5
好的,对不起。不起作用 - 'new_messages'列中的值在更新后保持不变:'new_messages = new_messages + NEW.received' – user1406271
'received = 1 then new_messages = new_messages + NEW.new_messagesand when received = 0' ??? ? – Sami