41 lines
835 B
SQL
41 lines
835 B
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `edi`.`mail_new`(
|
|
vMessageId VARCHAR(100)
|
|
,vSender VARCHAR(150)
|
|
,OUT vSelf INT
|
|
)
|
|
BEGIN
|
|
/**
|
|
* Registers a mail message.
|
|
*
|
|
* @param vMessageId Message-ID of email
|
|
* @param vSender Id of mail sender
|
|
* @param vSelf The created message id
|
|
*/
|
|
DECLARE vSenderId INT;
|
|
DECLARE vIsDuplicated BOOL;
|
|
DECLARE duplicateKey CONDITION FOR 1062;
|
|
|
|
DECLARE CONTINUE HANDLER FOR duplicateKey
|
|
SET vIsDuplicated = TRUE;
|
|
|
|
SELECT id INTO vSenderId
|
|
FROM mailSender
|
|
WHERE mail = vSender;
|
|
|
|
SET vIsDuplicated = FALSE;
|
|
INSERT INTO mail SET
|
|
sender = vSender,
|
|
senderFk = vSenderId,
|
|
messageId = vMessageId;
|
|
|
|
IF vIsDuplicated THEN
|
|
SELECT id INTO vSelf
|
|
FROM mail
|
|
WHERE messageId = vMessageId;
|
|
ELSE
|
|
SET vSelf = LAST_INSERT_ID();
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|