我无法让它工作,它运行正常,但插入
没有任何反应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;
我做错了什么?
答案 0 :(得分:0)
如果我理解正确,那么您实际要实现的目标是为1
列设置默认值jo
。在这种情况下,不需要before insert trigger
。您可以在创建表格时将其定义为该列的default value
,如
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;
然后在插入后,您将有一条记录
ID JA JO
1 16 1
查看演示Fiddle Here
谈论你的创建触发器语法。尝试以下修改的触发器代码
DELIMITER $$
CREATE TRIGGER test BEFORE INSERT ON prueba
FOR EACH ROW
BEGIN
SET NEW.jo=1;
END$$
DELIMITER ;