在插入触发器之前检查数据库中是否存在值
Before Insert Trigger to check a value exists in database
我想创建一个触发器,在发送新消息时更新数据库。
如果 SenderId 和 RecientId 已经有一个 conversationId,那么更新数据库使得 New.conversationId = existing conversationId.
Table: mailbox_message
创建一个触发器,每当用户 11 和 5 互相发送消息时将 conversationId 更新为相同的值。
delimiter $$
create trigger before_insert_conversationId
before insert on data25k29_mailbox_message
for each row
begin
IF ( EXISTS (
SELECT data25k29_mailbox_message.conversationId FROM data25k29_mailbox_message
WHERE (data25k29_mailbox_message.senderId='5'
and data25k29_mailbox_message.recipientId = '11')
and (data25k29_mailbox_message.senderId= '11'
and data25k29_mailbox_message.recipientId= '5')
)
)
THEN
SET NEW.conversationId = data25k29_mailbox_message.conversationId;
ELSE
SET NEW.conversationId = NEW.conversationId;
END IF;
end
$$
插入值后该值没有改变。非常感谢在这方面的任何帮助。谢谢
这是我对这个问题的工作片段。
Drop trigger if exists after_insert_conversationId;
delimiter |
CREATE TRIGGER after_insert_conversationId
before insert ON data25k29_mailbox_message
FOR EACH ROW
BEGIN
Declare v1 int;
select conversationId into v1 from data25k29_mailbox_message
where senderId = new.senderId and recipientId = new.recipientId limit 1;
if v1 is NULL
then
set new.conversationId = new.conversationId;
else
set new.conversationId = v1;
End if;
END|
我想创建一个触发器,在发送新消息时更新数据库。 如果 SenderId 和 RecientId 已经有一个 conversationId,那么更新数据库使得 New.conversationId = existing conversationId.
Table: mailbox_message
创建一个触发器,每当用户 11 和 5 互相发送消息时将 conversationId 更新为相同的值。
delimiter $$
create trigger before_insert_conversationId
before insert on data25k29_mailbox_message
for each row
begin
IF ( EXISTS (
SELECT data25k29_mailbox_message.conversationId FROM data25k29_mailbox_message
WHERE (data25k29_mailbox_message.senderId='5'
and data25k29_mailbox_message.recipientId = '11')
and (data25k29_mailbox_message.senderId= '11'
and data25k29_mailbox_message.recipientId= '5')
)
)
THEN
SET NEW.conversationId = data25k29_mailbox_message.conversationId;
ELSE
SET NEW.conversationId = NEW.conversationId;
END IF;
end
$$
插入值后该值没有改变。非常感谢在这方面的任何帮助。谢谢
这是我对这个问题的工作片段。
Drop trigger if exists after_insert_conversationId;
delimiter |
CREATE TRIGGER after_insert_conversationId
before insert ON data25k29_mailbox_message
FOR EACH ROW
BEGIN
Declare v1 int;
select conversationId into v1 from data25k29_mailbox_message
where senderId = new.senderId and recipientId = new.recipientId limit 1;
if v1 is NULL
then
set new.conversationId = new.conversationId;
else
set new.conversationId = v1;
End if;
END|