我正在尝试在 MYSQL 中创建一个存储过程,如果在创建记录时留空,它会填充一个字段。具体来说,我们有一个应用程序,它在创建新票证时使用 CC 字段填充电子邮件地址。
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `cc_update`()
BEGIN
SELECT * FROM `ehelpdesk`.`ticket` WHERE `CC` = 'Null';
UPDATE `ehelpdesk`.`ticket` SET `CC`='email@mail.com';
END
我没有弄清楚的是创建新票证或"ID"时如何调用该过程。
这是我用于创建触发器的完整代码
DELIMITER $$
CREATE TRIGGER `ins_cc` BEFORE INSERT ON `ticket` FOR EACH ROW BEGIN
IF (NEW.CC IS NULL) THEN
SET NEW.CC='email.string';
End If;
end$$
DELIMITER ;
您可以创建一个触发器,每次将记录插入 ehelpdesk 表时都会执行该触发器:
CREATE TRIGGER `ticket_BINS` BEFORE INSERT ON `ticket` FOR EACH ROW
BEGIN
IF (NEW.CC IS NULL) THEN
SET NEW.CC= "email@mail.com";
END IF;
END;
对于您正在做的事情,请确保 CC 不为空,我建议设置票证的默认值。抄送至 email@mail.com
ALTER TABLE `ehelpdesk`.`ticket`
CHANGE COLUMN `CC` `CC` VARCHAR(45) NULL DEFAULT 'email@mail.com' ;
存储过程不正确
CREATE DEFINER=`root`@`localhost` PROCEDURE `cc_update`()
BEGIN
UPDATE `ehelpdesk`.`ticket` SET `CC`='email@mail.com' WHERE `CC` IS NULL;
END