插入前的MySQL触发器
我不能让这个工作,它运行正常,但没有发生任何事情在插入插入前的MySQL触发器,mysql,triggers,Mysql,Triggers,我不能让这个工作,它运行正常,但没有发生任何事情在插入 DROP TRIGGER IF EXISTS test; DELIMITER $$ CREATE TRIGGER test BEFORE INSERT ON prueba FOR EACH ROW BEGIN SET NEW.jo=1 END DELIMITER $$; insert into prueba (ja) values (16); CREATE TABLE
DROP TRIGGER IF EXISTS test;
DELIMITER $$
CREATE
TRIGGER test BEFORE INSERT
ON prueba
FOR EACH ROW
BEGIN
SET NEW.jo=1
END
DELIMITER $$;
insert into prueba (ja) values (16);
CREATE TABLE `prueba` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`ja` int(11) DEFAULT NULL,
`jo` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
LOCK TABLES `prueba` WRITE;
我做错了什么???如果我理解正确,那么您实际试图实现的是将
jo
列的默认值设置为1
。在这种情况下,插入触发器之前不需要。在创建表时,您可以将该列定义为默认值
CREATE TABLE `prueba` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`ja` int(11) DEFAULT NULL,
`jo` int(11) DEFAULT 1, <-- Notice This Line
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
观看演示
讨论您的创建触发器语法。尝试下面修改的触发器代码
DELIMITER $$
CREATE TRIGGER test BEFORE INSERT ON prueba
FOR EACH ROW
BEGIN
SET NEW.jo=1;
END$$
DELIMITER ;
您没有正确使用分隔符。例如,我并没有试图设置默认值,这只是一个例子,我真正的目标是以不同的方式转换日期,比如年、月、星期几等等。
DELIMITER $$
CREATE TRIGGER test BEFORE INSERT ON prueba
FOR EACH ROW
BEGIN
SET NEW.jo=1;
END$$
DELIMITER ;