我正在尝试在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 ;
答案 0 :(得分:0)
您可以创建一个触发器,每次将记录插入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不为空,我建议将ticket.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